如何将所选行列中的值替换为数据帧中的数组?

我有一个df


df = pd.DataFrame(data={'A': [1,2,3,4,5,6,7,8],

                       'B': [10,20,30,40,50,60,70,80]})

    A   B

0   1   10

1   2   20

2   3   30

3   4   40

4   5   50

5   6   60

6   7   70

7   8   80

我从中选择了几行。然后我有一个字典包含值,如果键与列中的值匹配,我应该将其插入列中BAdf


my_dict = {2: 39622884,

           4: 82709546,

           5: 28166511,

           7: 89465652}

当我使用以下作业时


df.loc[df['A'].isin(my_dict.keys())]['B'] = list(my_dict.values())

我收到错误:值错误:值的长度与索引的长度不匹配


理想的输出是


    A   B

0   1   10

1   2   39622884

2   3   30

3   4   82709546

4   5   50

5   6   28166511

6   7   89465652

7   8   80

实现此过程的正确方法是什么?


凤凰求蛊
浏览 95回答 1
1回答

浮云间

你可以做 和 :mapfillnadf['B'] = df['A'].map(my_dict).fillna(df['B'])输出:   A           B0  1        10.01  2  39622884.02  3        30.03  4  82709546.04  5  28166511.05  6        60.06  7  89465652.07  8        80.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python