尽管 Python Pandas 中有共享值,但不能将 df2 合并到 df1 吗? [关闭]

Posted

技术标签:

【中文标题】尽管 Python Pandas 中有共享值,但不能将 df2 合并到 df1 吗? [关闭]【英文标题】:Can not merge df2 to df1 despite shared values in Python Pandas? [closed] 【发布时间】:2021-09-03 00:11:59 【问题描述】:

我的情况很奇怪。我尝试使用一个通用列合并两个 DataFrame,如下所示:

df1.merge(df2, on = "customer_id", how = "left") 

尽管如此,没有来自 df2 的列加入 df1,即使它们共享 customer_id。在两个 DataFrames 中,customer_id 都是相同类型的“int”。怎么可能?我能做什么?

【问题讨论】:

请添加您的 df1、df2 示例数据。 我无法添加样本数据,因为这些数据集非常庞大,请问您在工作中是否有类似的情况? 运行df1.head()df2.head() 只获取每个数据帧的五行。而且,如果列号很大,请尝试使用包含customer_id 的方式捕获其中的一些。如果看不到您的数据,我们无法解决问题。 你必须至少显示数据集的头部,只保留两列:-> df1[["customer_id", "col2"]] 和 df2[["customer_id", "col3" ]] 打印 df1.dtypesdf2.dtypes 并将输出添加到问题中。 【参考方案1】:

您需要将错误消息添加到您的帖子中。此外,最好粘贴一些数据,以便人们测试发生了什么。

例如:

df1 = pd.DataFrame('customer_id':[1,1,1,2,2,2], 'data1':['a','b','c','d','e','f'])
df2 = pd.DataFrame('customer_id':[2,5,3,4,3,1], 'data2':['aa','bb','cc','dd','ee','ff'])

现在我们可以测试发生了什么:

df1.merge(df2, on = "customer_id", how = "left") 

似乎有效。所以很可能你的数据结构有问题。

我个人不喜欢 df.merge 的语法,我建议改用 pd.merge

pd.merge(df1, df2, how='left', on= 'customer_id')
of 
out = pd.merge(df1, df2, how='left', left_on= 'customer_id', right_on = 'customer_id')

有关合并的更多信息,请参阅pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

【讨论】:

以上是关于尽管 Python Pandas 中有共享值,但不能将 df2 合并到 df1 吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python pandas计算时间,直到列中的值大于当前期间

在 Python Pandas 中使用聚合函数时如何忽略值 0?

获取基于另一列pandas python的分组值的百分比

Python Pandas Pivot表 - 计数点

pandas numpy处理缺失值,none与nan比较

Reanimated 2:更新状态会导致 animatedProps 中的动画重置,尽管没有更改共享值