我有一個dfdf = pd.DataFrame(data={'A': [1,2,3,4,5,6,7,8], 'B': [10,20,30,40,50,60,70,80]}) A B0 1 101 2 202 3 303 4 404 5 505 6 606 7 707 8 80我從中選擇了幾行。然后我有一個字典包含值,如果鍵與列中的值匹配,我應該將其插入列中BAdfmy_dict = {2: 39622884, 4: 82709546, 5: 28166511, 7: 89465652}當我使用以下作業時df.loc[df['A'].isin(my_dict.keys())]['B'] = list(my_dict.values())我收到錯誤:值錯誤:值的長度與索引的長度不匹配理想的輸出是 A B0 1 101 2 396228842 3 303 4 827095464 5 505 6 281665116 7 894656527 8 80實現此過程的正確方法是什么?
1 回答

浮云間
TA貢獻1829條經驗 獲得超4個贊
你可以做 和 :mapfillna
df['B'] = df['A'].map(my_dict).fillna(df['B'])
輸出:
A B
0 1 10.0
1 2 39622884.0
2 3 30.0
3 4 82709546.0
4 5 28166511.0
5 6 60.0
6 7 89465652.0
7 8 80.0
添加回答
舉報
0/150
提交
取消