首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过公共列值将一个dataframe列值分配给另一个

通过公共列值将一个dataframe列值分配给另一个
EN

Stack Overflow用户
提问于 2017-06-18 10:56:37
回答 2查看 1K关注 0票数 1

假设我有两个dataframe,df1,df2,如下所示。df1:

代码语言:javascript
运行
复制
   A   B    C
0  4  40  300
1  2  70  900
2  5  80  900

和另一个dataframe df2:

代码语言:javascript
运行
复制
   A  D   E
0  1  0  00
1  2  0  00
2  3  0  00
3  4  0  00
4  5  0  00 
5  6  0  00

现在,我希望通过A列匹配的条件将df1'C‘的值赋值给df2'E’。结果应该是

代码语言:javascript
运行
复制
   A  D   E
0  1  0  00
1  2  0  900
2  3  0  00
3  4  0  300
4  5  0  900 
5  6  0  00

我该怎么做?

注意:我在寻找类似update df2的东西,而不是合并,因为我必须在一个循环中多次这样做。

EN

回答 2

Stack Overflow用户

发布于 2017-06-18 11:07:16

可以使用合并函数。

代码语言:javascript
运行
复制
df2 =pd.merge(df2,df1,on='A',how='left')
df2 = df2.fillna(value='00')
df2 = df2[['A','D','C']].rename(columns={'C': 'E'})
print(df2)
   A  D    E
0  1  0   00
1  2  0  900
2  3  0   00
3  4  0  300
4  5  0  900
5  6  0   00
票数 1
EN

Stack Overflow用户

发布于 2017-06-18 11:31:10

您可以使用pd.merge()

代码语言:javascript
运行
复制
pd.merge(df2[['A','D']],df1[['A']].assign(E=df1.C),on='A',how='left').fillna('00')

Out[269]: 
   A  D    E
0  1  0   00
1  2  0  900
2  3  0   00
3  4  0  300
4  5  0  900
5  6  0   00

或者可以使用df.update()

代码语言:javascript
运行
复制
df2_new = df2.set_index('A')
df2_new.update(df1.assign(E=df1.C).set_index('A'))
df2_new.reset_index()
Out[254]: 
   A  D    E
0  1  0   00
1  2  0  900
2  3  0   00
3  4  0  300
4  5  0  900
5  6  0   00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44614251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档