下面的代码有效。
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