랭귀지/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)