試圖用系列值更新數據幀的一部分。通過廣播系列更新數據幀值
np.random.seed(1)
df = pd.DataFrame(np.random.randint(1,100,(5,5)),columns =list('ABCDE'))
print df
A B C D E
0 38 13 73 10 76
1 6 80 65 17 2
2 77 72 7 26 51
3 21 19 85 12 29
4 30 15 51 69 88
與一系列:
ser = pd.Series(index =list('CBADE'),data = range(-5,0))
C -5
B -4
A -3
D -2
E -1
dtype: int64
讓作爲切片用於更新
criteria = df['A'] < 25
criteria:
0 False
1 True
2 False
3 True
4 False
嘗試:
df[criteria] = ser
df.loc[criteria,:] = ser
etc.
期望的輸出:
A B C D E
0 38 13 73 10 76
1 -3 -4 -5 -2 -1
2 77 72 7 26 51
3 -3 -4 -5 -2 -1
4 30 15 51 69 88
我想兌現列索引和忽略行索引,使用布爾條件和廣播。
非常好的解決方案 - 我沒有想到爲這個任務使用'mask' – MaxU
我選擇了這個解決方案,因爲它是純粹的熊貓解決方案,但願意重新考慮。 MaxU你覺得怎麼樣? – Dickster