1
關於如何選擇DataFrame
中的行以及替換那些行中的列中的值,但是缺少一個用例,有很多關於SO的問題。要使用示例DataFrame
from this question,基於行選擇的Pandas中的多列替換
In [1]: df
Out[1]:
apple banana cherry
0 0 3 good
1 1 4 bad
2 2 5 good
而這個作品,如果一個人想改變基於另一個單柱:
df.loc[df.cherry == 'bad', 'apple'] = df.banana * 2
或者這臺在兩列中的值:
df.loc[df.cherry == 'bad', ['apple', 'banana'] = np.nan
但是這不起作用:
df.loc[df.cherry == 'bad', ['apple', 'banana'] = [df.banana, df.apple]
,因爲很明顯,右側是3x2的,而左側是1x2的,因此錯誤消息
ValueError: Must have equal len keys and value when setting with an ndarray
所以我的理解是什麼問題,但如何解決?
謝謝!第二種解決方案是我正在尋找的解決方案。所以基本上在我的情況下,它會是'df.loc [df.cherry =='bad',['apple','banana']] = df.loc [df.cherry =='bad',['banana ','蘋果']]。值。有趣的是,即使我顛倒了列名,它也沒有'values'的作用。無論如何,還有一個問題:如果我想要一些特殊的東西(例如'df.banana * 2'),有沒有在'df'中添加新列的方法?也許用'apply'? –
謝謝,這看起來不錯 - 所以基本上我可以像'df.loc [...] = pd.concat([df.banana * 3,df.apple * 2],axis = 1).values' 。顯然,價值是我尋找的魔力,謝謝! –