18

在对整个 pandas 数据框执行计算后,我需要返回并根据另一个变量的值覆盖变量计算(通常设置为零)。有没有更简洁/惯用的方式来执行这种操作?

df['var1000'][df['type']==7] = 0
df['var1001'][df['type']==7] = 0
df['var1002'][df['type']==7] = 0
...
df['var1099'][df['type']==7] = 0

有没有一种熊猫方式来做这样的事情?

if (df['type']==7):
    df['var1000'] = 0
    df['var1001'] = 0
    df['var1002'] = 0
    ...
    df['var1099'] = 0
4

1 回答 1

26
df.ix[df.type==7, ['var1001', 'var1002']] = 0

如果你在所有列上都这样做,你可以只做df.ix[df.type==7] = 0. 或者,当然,如果您有一个要替换其值的列的列表,您可以在第二个插槽中传递该列表:

columnsToReplace = ['var1001', 'var1002', ...]
df.ix[df.type==8, columnsToReplace] = 0
于 2013-06-15T22:07:10.760 回答