python - 熊猫匹配元素
问题描述
我有一个名为 df1 的数据库和一个名为 df2 的工作表。</p>
我想用 pandas 的 df1 填充 df2。</p>
DF1:
name SCORE height weight
1 JACK 66 150 100
2 PAUL 50 165 22
3 MLKE 30 132 33
4 Meir 20 110 20
5 Payne 10 175 21
DF2:
name SCORE height weight
1 JACK
2 PAUL
3 MLKE
*名字可能会打乱顺序
我的错误代码:
import openpyxl
import pandas as pd
df1 = pd.DataFrame(pd.read_excel('df1.xlsx',sheet_name =0))
df2 = pd.DataFrame(pd.read_excel('df2.xlsx',sheet_name = 0))
result = df1.merge(df2,on = ['NAME'],how="left")
预期结果:
DF2:
name SCORE height weight
1 JACK 66 150 100
2 PAUL 50 165 22
3 MLKE 30 132 33
解决方案
如您所述,name
可能会弄乱顺序,因此,如果要使用df1
to fill-up df2
,可以尝试name
在两者中设置为 indexdf1
然后df2
使用.update()
,如下所示:
df1a = df1.set_index('name')
df2a = df2.set_index('name')
df2a.update(df1a)
df2 = df2a.reset_index()
结果:
(使用df1
基于底部附近图片的数据):
print(df2)
name SCORE height weight
0 JACK 66 150 100
1 PAUL 50 165 22
2 MLKE 30 132 33
如果要保留原来的行索引df2
,可以先保存索引,以后再恢复,如下:
df1a = df1.set_index('name')
df2a = df2.set_index('name')
df2a.update(df1a)
df2_idx = df2.index
df2 = df2a.reset_index()
df2.index = df2_idx
结果:
print(df2)
name SCORE height weight
1 JACK 66 150 100
2 PAUL 50 165 22
3 MLKE 30 132 33
推荐阅读
- java - 在main方法中,为什么可以调用同一个类的构造函数呢?
- javascript - 在组件重新加载时未调用 React componentDidMount
- php - 需要 MVC 的分页脚本
- automationanywhere - 使用 Automation Anywhere 的 RTC Jazz 服务器用户登录
- python - 每次我运行应用程序时都会出现“RuntimeError:生成器引发 StopIteration”。(没有任何作用)
- python - 如何建立 LSTM 网络来预测多序列?
- docker - 如何使用 ssh 连接获取卷数据
- spring-boot - 如何将 Spring-boot 调度器设计为 Service,以便其他微服务可以使用它
- python - Smtplib 代码在 python3.7 中适用于 linux 但不适用于 windows 10
- sql - ORA-01843: 在 maximo 上作为报告运行时不是有效的月份异常