首页 > 解决方案 > 熊猫数据根据条件变化

问题描述

我有具有特殊字符的数据,我想更改条件单元格值。

数据位于前几行 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']

但它没有用。

标签: pythonpandasdataframe

解决方案


DataFrame.copy如果需要 new则使用DataFrame,然后单独设置新值:

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

推荐阅读