我有带有特殊字符的数据,我想更改条件单元格的值。
数据在前几行以下 df_orig:
idx A B C D
0 0.5 2 5 #
1 3 5 8 %
2 6 8 10 $
3 9 10 15 $
4 11 15 18 #
我想更改单元格值,其中D中的$,A = 0和B = C
应将输出 更改:
idx A B C D
0 0.5 2 5 #
1 3 5 8 %
2 0 10 10 $
3 0 15 15 $
4 11 15 18 #
我尝试了
change = df_orig.loc[(df.orig['D'] == '$'), df_orig['A'] == '0'& df_orig['B'] = df_orig['c']
但是没有用。
答案 0 :(得分:1)
如果需要新的DataFrame
,请使用DataFrame.copy
,然后分别设置新值:
df = df_orig.copy()
m = df['D'].eq('$')
#alternative
#m = df['D'] == '$'
df.loc[m, 'A'] = 0
df.loc[m, 'B'] = df.C
print (df)
A B C D
idx
0 0.5 2 5 #
1 3.0 5 8 %
2 0.0 10 10 $
3 0.0 15 15 $
4 11.0 15 18 #
也可以一起使用:
m = df['D'].eq('$')
df.loc[m, ['A','B']] = df.assign(E=0).loc[m, ['E','C']].values
答案 1 :(得分:1)
您需要两个单独的语句来更改A
和B
列
# make a copy of df_orig
change = df_orig.copy()
# when D == "$", replace A by 0
change.loc[change['D'] == "$", "A"] = 0
# when D == "$", replace B by C
change.loc[change['D'] == "$", "B"] = change.loc[change['D'] == "$", "C"]