在对整个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
答案 0 :(得分:25)
df.ix[df.type==7, ['var1001', 'var1002']] = 0
如果您在所有列上执行此操作,则可以执行df.ix[df.type==7] = 0
。或者当然,如果您有要替换其值的列的列表,则可以在第二个插槽中传递该列表:
columnsToReplace = ['var1001', 'var1002', ...]
df.ix[df.type==8, columnsToReplace] = 0