如何在熊猫中一次应用或替换多列?



下面的代码有效。

df['Forecast'] = df['Forecast'].apply(lambda x: '0' if x == '' else x)

df['Yield'] = df['Yield'].apply(lambda x: '0' if x == '' else x)

但是当我尝试一起做时,它不起作用

to_change = ['Forecast', 'Yield']

df[to_change] = df[to_change].apply(lambda x: '0' if x == '' else x)

它给出以下错误:

值错误:序列的真值不明确。使用 a.empty、a.bool((、a.item((、a.any(( 或 a.all((。

如何在不为每一列编写新代码行的情况下同时执行这些功能(替换或应用(?

使用熊猫怎么样?DataFrame.replace ?

to_change     = ['Forecast', 'Yield']
df[to_change] = df[to_change].replace(to_replace='', value='0')
#            or df[to_change].replace({'': '0'})

经过测试


一个插图。假设您df定义如下

df = pd.DataFrame({
'_else_'  : ['', '', ''],
'Forecast': ['', 'y', 'o'],
'Yield'   : ['k', '', 'm'],
})

>>> df
_else_ Forecast Yield
0                     k
1               y      
2               o     m

事实证明,做

>>> df[to_change] = df[to_change].replace({'': '0'})

已更改df如下

>>> df
_else_ Forecast Yield
0               0     k
1               y     0
2               o     m

最新更新