3
我有一個熊貓數據框,我想要創建一個新的列,對於不同的行組進行不同的計算。下面是一個簡單的例子:分配到熊貓中的選擇
import pandas as pd
data = {'foo': list('aaade'), 'bar': range(5)}
df = pd.DataFrame(data)
數據框看起來是這樣的:
bar foo
0 0 a
1 1 a
2 2 a
3 3 d
4 4 e
現在我加入了一個新的列,並嘗試一些值分配給選定的行:
df['xyz'] = 0
df.loc[(df['foo'] == 'a'), 'xyz'] = df.loc[(df['foo'] == 'a')].apply(lambda x: x['bar'] * 2, axis=1)
數據幀沒有改變。什麼我希望是這個樣子的數據框:
bar foo xyz
0 0 a 0
1 1 a 2
2 2 a 4
3 3 d 0
4 4 e 0
在我的現實世界的問題,「XYZ」列也computated對於其他行,但使用不同的功能。實際上,我也在使用不同的列進行計算。所以我的問題:
- 爲什麼上述例子中的賦值不起作用?
- 是否需要兩次做
df.loc[(df['foo'] == 'a')
(正如我現在這樣做)?
是,傑夫,寫更多的東西來的文檔是我的待辦事項列表。 :) –
,我甚至沒有評論:) – Jeff
感謝您的快速回答。這正是我想要的。如果有其他呼叫,可以將這些鏈接起來嗎? – uuazed