python - 如何合并长度不同的熊猫中的两列
问题描述
我有 2 个 df
在第一个 df 中有 3 列,10 行,第 3 列是输出列
在第二个 Df 中有 3 列 1000 行
如果我的第一个 df 2 列与第二个 df 的 2 列匹配,则第一个 df 的第 3 列必须附加第二个 df。
两个df都在下面
df1
,A,B,output
1,abc,CCE,out1
2,def,CCE,out2
3,ghi,CCE,out3
4,hij,CCE,out4
5,klm,,out5
df2
,A,B
1,abc,CCE
2,def,CCE
3,lmn,CCE
4,opq,CCE
5,abc,CCE
6,klm,,
df2_expected
1,abc,CCE,out1
2,def,CCE,out2
3,lmn,CCE,
4,opq,CCE,
5,abc,CCE,out1
6,klm,,out5
例如,我实际上在第一个 df 它的 n 列和 df2 它的 n-1 列中给出了 3 列,这意味着输出列不会出现在 df2
解决方案
请试试这个
import pandas as pd
data1={'nu':[1,2,3,4,5], 'A':['abc','def','ghi','hij','klm'], 'B':['CCE','CCE','CCE','CCE','CCE'], 'output':['out1','out2','out3','out4','out5',]}
data2={'nu':[1,2,3,4,5], 'A':['abc','def','lmn','opq','abc'], 'B':['CCE','CCE','CCE','CCE','CCE'], 'output':[]}
df1=pd.DataFrame(data1,columns=['A','B','output'], index=data1['nu'])
df2=pd.DataFrame(data2,columns=['A','B'], index=data2['nu'])
df2.merge(df1, on=['A','B'],how='left').fillna('')
A B output
0 abc CCE out1
1 def CCE out2
2 lmn CCE
3 opq CCE
4 abc CCE out1
推荐阅读
- c++ - 转换为向量对象请求的非标量类型
- asp.net - 如何在反应中调用 Fetch post API 到 ASP.NET 通用处理程序?
- c# - 反序列化 DateTimeOffset 时需要时区信息
- javascript - 在 jquery-ui 中实现两个可排序的列表,其中一个被隐藏并在拖动标题后显示
- javascript - 具有多个下拉选择的 AJAX 表过滤
- php - SilverStripe 创建/插入批量记录
- javascript - 如何使用 React 处理 Node.js API 错误
- excel - 尝试将除两个特定工作表之外的所有工作表导出到以选项卡名称命名的单个 PDF
- c# - 在 Visual Studio 项目中构建单个网页时如何确定受影响的文件以便仅使用该页面更新网站?
- python - 将非常大的 pandas 数据帧加载到 postgresql 数据库的最快方法