提问人:NEWBIE 提问时间:11/17/2022 最后编辑:NEWBIE 更新时间:11/18/2022 访问量:33
Python Pandas:连接数据帧
Python Pandas: Joining Dataframes
问:
我有表A和表B。我想加入他们以获得表 C。我尝试了以下代码。但它并没有给我我想要的结果。
C = pd.merge(A, B, how = 'inner', left_on = ['ID1', 'ID2', 'ID3'], right_on = ['IDA', 'IDB', 'IDC'])
表A
HDP的 | 编号2 | 高动态范围 | 颜色 | 旗 |
---|---|---|---|---|
一个 | 1 | 1 | 白 | Y |
B | 1 | 2 | 黑 | Y |
一个 | 1 | 3 | 绿 | N |
E | 2 | 3 | 蓝 | Y |
D | 4 | 5 | 蓝 | N |
C | 6 | 7 | 红 | N |
F | 9 | 7 | 黑 | Y |
表B
艾达 | 美洲开发银行 | IDC公司 |
---|---|---|
一个 | 1 | 1 |
F | 9 | 7 |
一个 | 1 | 3 |
D | 4 | 5 |
表C
HDP的 | 编号2 | 高动态范围 | 颜色 | 旗 |
---|---|---|---|---|
一个 | 1 | 1 | 白 | Y |
一个 | 1 | 3 | 绿 | N |
D | 4 | 5 | 蓝 | N |
F | 9 | 7 | 黑 | Y |
答:
1赞
Naveed
11/17/2022
#1
这是一种方法
# do a left merge and rop the null rows
out=(pd.merge(df, df2,
how = 'left',
left_on = ['ID1', 'ID2', 'ID3'],
right_on = ['IDA', 'IDB', 'IDC'])
.dropna()
.drop(columns=['IDA', 'IDB','IDC']))
ID1 ID2 ID3 Color Flag
0 A 1 1 White Y
2 A 1 3 Green N
4 D 4 5 Blue N
6 F 9 7 Black Y
或者,如果这些是 DF 中唯一的列,您可以将它们转换为字符串以使它们具有相同的类型。这也仅适用于联接,不影响 DF
(pd.merge(df.astype(str), df2.astype(str),
how = 'left',
left_on = ['ID1', 'ID2', 'ID3'],
right_on = ['IDA', 'IDB', 'IDC'])
.dropna()
.drop(columns=['IDA', 'IDB','IDC']))
ID1 ID2 ID3 Color Flag
0 A 1 1 White Y
2 A 1 3 Green N
4 D 4 5 Blue N
6 F 9 7 Black Y
评论
0赞
Naveed
11/18/2022
它对你有用吗?
0赞
NEWBIE
11/18/2022
不。如果 Col ID1 和 IDA 具有不同的数据类型,这会影响任何事情吗?
0赞
Naveed
11/18/2022
@NEWBIE,是的,类型需要相同。它们中的每一个的数据类型是什么?
0赞
Naveed
11/18/2022
@NEWBIE,请参阅替代解决方案
上一个:按关键字将一列变成多列
下一个:对分类值进行语句处理时的大小写
评论