【问题标题】:Pandas merge by name and date (multiple columns)Pandas 按名称和日期合并(多列)
【发布时间】:2019-09-30 16:40:54
【问题描述】:

我希望合并两个数据框,首先按名称,然后按日期。

df 1 看起来像这样

symbol. X.  X.  X.  X. date
AA.                    2018-01-16
AA.                    2018-05-04
....

然后是df2

symbol.  X.  X.  X. X. date
AA.                   2018-01-03
AA.                   2018-01-03

我尝试了以下多种变体:

data = pd.merge(df1, df2, left_on = ['symbol', 'date'], how = 'left') 

我想做的只是数据输出的左连接:

symbol.  X.  X. X. date
AA.                2018-01-03
AA.                2018-01-04
....

任何和所有的帮助将不胜感激​,我无法弄清楚我在这里做错了什么

【问题讨论】:

标签: python pandas merge multiple-columns


【解决方案1】:

要通过多列合并两个数据框,您可以使用

data = pd.merge(df1, df2, on=['symbol','date'], how='left')

如果列名不同,也可以使用

data = pd.merge(df1, df2, left_on=['symbol','date'], right_on=['symbol_2','date_2'], how='left')

希望能帮到你:)

【讨论】:

  • 当我使用它时,我的右侧都是空值。这是否意味着日期有问题?
  • 好的,这就是我所做的,我回去使用 df1['date'].apply(lambda x: x.date()) df2['date'].apply(lambda x : x.date()) 这样我就可以一直使用相同的数据类型/结构。在寻找相似之处时,我还使用了内部联接(请告知我是否应该使用外部联接?)谢谢!
【解决方案2】:

要在你的情况下合并数据框,你可以试试这个

dfFinal = df2.merge(df1[['Symbol']], on='Symbol', how='outer')

【讨论】:

  • 我不应该使用内部联接吗?我正在尝试匹配相似的数据点并删除不匹配的记录
【解决方案3】:

好的,这就是我所做的,我回去使用了

df1['date'].apply(lambda x: x.date())
df2['date'].apply(lambda x: x.date())

通过这种方式,我一直拥有相同的数据类型/结构。在寻找相似之处时,我还使用了内部联接(请告知我是否应该使用外部联接?)

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 2020-01-27
    • 2022-11-30
    • 2020-06-18
    • 2017-09-15
    • 2020-08-18
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多