簡體   English   中英

如何在 pandas 中一次應用或替換多個列?

[英]How do I .apply or .replace multiple columns at once in pandas?

下面的代碼有效..

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)

它給出了以下錯誤:

ValueError:Series 的真值不明確。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

如何在不為每一列編寫新代碼行的情況下同時執行這些功能(替換或應用)?

使用pandas.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'],
})

IE

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM