繁体   English   中英

Python Pandas - Concat两个具有不同行数和列数的数据帧

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM