【问题标题】:Merge two dataframes based on column in python根据python中的列合并两个数据框
【发布时间】:2019-05-24 10:00:57
【问题描述】:

两个 DataFrame(df1、df2),df1 有列 ID,df2 有列 ID, flag1, flag2。

我想合并两个 DataFrame,其中 df1 中的所有 ID 都应与 flag1,flag2 值一起使用。

我有以下代码行。

df3=pd.merge(df1, df2, on=id, how='left')

df3 的输出仅显示 ID 的列值,flag1 和 flag2 没有值。

df3 中的预期结果应该是 ID, flag1, flag2,其中 flag1 和 flag2 的值来自 df2。

【问题讨论】:

  • 应该是on='ID'吗?此外,您的合并代码应该按预期工作,除非两个数据帧之间没有匹配的 ID。
  • 您可以添加 df1 和 df2 的 2 个样本来复制您的原始数据帧吗?所以我们可以更好地理解?谢谢

标签: python-3.x pandas dataframe


【解决方案1】:

那么,简单地说:

import pandas as pd

df1 = pd.DataFrame({'id': [1,2,3,4,5,6]})

df2 = pd.DataFrame({'id': [2,4,6],
                    'flag1' : ['a','b','c'],
                    'flag2' : ['aa','bb','cc']})

pd.merge(df1, df2, how='left')

输出

   id   flag1   flag2
0   1   NaN NaN
1   2   a   aa
2   3   NaN NaN
3   4   b   bb
4   5   NaN NaN
5   6   c   cc

【讨论】:

  • 嗨,我试过了,但似乎没有用。仍然没有显示 flag1 和 flag2 的任何值。
  • 请运行我的代码并检查输出。你明白我得到的吗?
  • 大家好,问题已解决。这是因为 ID 列中的数据类型问题。一个 ID 列的类型是:object 和其他 int64。
猜你喜欢
  • 2023-01-13
  • 2015-10-28
  • 2016-10-08
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2021-09-18
相关资源
最近更新 更多