아미(아름다운미소)

df에서 a컬럼을 distinct 했을때 b컬럼이 true인 c컬럼을 copy b컬럼에 넣어준다 본문

랭귀지/pandas

df에서 a컬럼을 distinct 했을때 b컬럼이 true인 c컬럼을 copy b컬럼에 넣어준다

유키공 2024. 9. 20. 14:03
import pandas as pd

# 예시 DataFrame 생성
data = {
    'a': [1, 2, 3, 4],
    'b': ['group1', 'group1', 'group2', 'group2'],
    'c': [10, 20, 30, 40],
    'd': ['T', 'F', 'T', 'F']
}

df = pd.DataFrame(data)

# f 컬럼 초기화
df['f'] = None

# 그룹화하여 f 컬럼 채우기
for name, group in df.groupby('b'):
    value = group.loc[group['d'] == 'T', 'c']
    if not value.empty:
        df.loc[group.index, 'f'] = value.values[0]

print(df)
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'a': ['true', 'false', 'TRUE', 'false', 'TRUE'],
    'b': [1, 2, 3, 4, 5],
    'c': [0, 0, 0, 0, 0]  # 초기값
}
df = pd.DataFrame(data)

# a 컬럼을 대문자로 변경
df['a'] = df['a'].str.upper()

# a 컬럼이 'TRUE'인 경우 b 값을 c 컬럼에 복사
df['c'] = df.apply(lambda row: row['b'] if row['a'] == 'TRUE' else row['c'], axis=1)

print(df)
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'a': ['x', 'y', 'x', 'z', 'y'],
    'b': ['FALSE', 'FALSE', 'TRUE', 'TRUE', 'FALSE'],
    'c': [1, 2, 3, 4, 5]
}
df = pd.DataFrame(data)

# b컬럼이 'TRUE'인 경우 c컬럼의 값을 b컬럼에 복사
df['b'] = df.apply(lambda row: row['c'] if row['b'] == 'TRUE' else row['b'], axis=1)

# a컬럼의 고유 값으로 그룹화하여 b컬럼 값 채우기
df['b'] = df.groupby('a')['b'].transform(lambda x: x.ffill().bfill())

print(df)
Comments