![](/img/trans.png)
[英]How to concat two or more data frames with different columns names in pandas
[英]Python Pandas - Concat two data frames with different number of rows and columns
我有两个具有不同行号和列的数据帧。 两个表都有几个常见的列,包括“客户ID”。 两个表都看起来像这样,大小分别为11697行×15列和385839行×6列。 客户ID可能在第二个表中重复。 我想连接两个表,并希望使用客户ID合并类似的列。 我怎么能用python PANDAS做到这一点。 一张桌子看起来像这样 -
我使用下面的代码 -
pd.concat([df1, df2], sort=False)
只是想确保我没有丢失任何信息? 如何检查是否有多个带有一个ID的条目,如何将其合并到一个结果中?
编辑 -
当我使用上面的代码时,这里是数据集中NA'S的值之前和之后 -
有人能告诉我,哪里出错了?
我相信DataFrame.merge
在这种情况下会起作用:
# use how='outer' to preserve all information from both DataFrames
df1.merge(df2, how='outer', on='customer_id')
如果两个DataFrames的索引都设置为customer_id
那么DataFrame.join
也可以工作(它也更简单):
df1 = df1.set_index('customer_id')
df2 = df2.set_index('customer_id')
df1.join(df2, how='outer')
pd.concat将在这里做的技巧,只需将axis设置为1以在第二轴(列)上连接,您应该首先为两个数据帧设置索引到customer_id
import pandas as pd
pd.concat([df1.set_index('customer_id'), df2.set_index('customer_id')], axis = 1)
如果您想通过concatenaton省略具有空值的行,请使用dropna:
pd.concat([df1.set_index('customer_id'), df2.set_index('customer_id')], axis = 1).dropna()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.