从ID为sam的另一个df更新列值

2024-06-16 09:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧如下

df1

article_id col1  col2
1            2   2.5
2            5   2.5
3            3   2.5
4            8   2.5
5            2   2.5
6            5   2.5
7            1   2.5

df2

article_id somecol3   
30           11       
6            3
22           1 
5            4 
3            7
61           8 
7            3 

df1和df2的article_id是唯一的。df1和df2都有一些共同的article_id,在上面的(6,5,3,7)中。我想要的是,从df1的col1列的值更新df2的somecol3的值,其中'article\u id'是公共的。所以df2在手术后应该是这样的

article_id somecol3   
30            11
6             5
22            1
5             2
3             3
61            8
7             1    

Tags: 数据idarticlecol2col1手术df1df2
2条回答

通过使用merge

 df1.merge(df[['article_id','col1']],on='article_id',how='left').fillna('')
    Out[48]: 
       article_id col1
    0          30     
    1           6    5
    2          22     
    3           5    2
    4           3    3
    5          61     
    6           7    1

更新

df2.merge(df1[['article_id', 'col1']], on='article_id', how='left').ffill(1).drop('somecol3',1)
Out[69]: 
   article_id  col1
0        30.0  11.0
1         6.0   5.0
2        22.0   1.0
3         5.0   2.0
4         3.0   3.0
5        61.0   8.0
6         7.0   1.0

^{}^{}^{}一起使用:

df2['somecol3'] = (df2['article_id'].map(df1.set_index('article_id')['col1'])
                                    .combine_first(df2['somecol3'])
                                    .astype(int))
print (df2)

   article_id  somecol3
0          30        11
1           6         5
2          22         1
3           5         2
4           3         3
5          61         8
6           7         1

df2['somecol3'] = (df2['article_id'].map(df1.set_index('article_id')['col1'])
                                    .fillna(df2['somecol3'])
                                    .astype(int))
print (df2)
   article_id  somecol3
0          30        11
1           6         5
2          22         1
3           5         2
4           3         3
5          61         8
6           7         1

^{}溶液:

df2['somecol3'].update(df2['article_id'].map(df1.set_index('article_id')['col1']))
print (df2)
   article_id  somecol3
0          30        11
1           6         5
2          22         1
3           5         2
4           3         3
5          61         8
6           7         1

相关问题 更多 >