if / then / else的Python / pandas习语

时间:2013-06-15 22:00:32

标签: python pandas

在对整个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

1 个答案:

答案 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