尽管 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.dtypes
和 df2.dtype
s 并将输出添加到问题中。
【参考方案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计算时间,直到列中的值大于当前期间