【问题标题】:join,concatenate two dataframe based on reteated column pandas python加入,基于reteated列pandas python连接两个数据框
【发布时间】:2018-04-06 07:17:03
【问题描述】:

我有 2 个数据框:

df1:

date     column1           
2014-03-13   1
2014-03-14   2

d2:

    date        Id people  value                      
2014-03-13   1      A   -3.0
2014-03-13   1      B   -6.0
2014-03-14   1      A   -3.1
2014-03-14   2      B   -5.0

我想要一个 df3 =

     date   Id people  value   column1

2014-03-13   1      A   -3.0      1
2014-03-13   1      B   -6.0      1
2014-03-14   1      A   -3.1      2
2014-03-14   2      B   -5.0      2

我尝试使用 pandas 的函数 join,但我遇到了一些错误,有什么办法可以解决它

【问题讨论】:

  • 性能在您的解决方案中重要吗?
  • @jezrael 是的,谢谢

标签: python pandas join dataframe concatenation


【解决方案1】:

只写:

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

【讨论】:

    【解决方案2】:

    如果在两个DataFrames 中加入的列仅是date,则仅使用merge

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

    df['new'] = df2['date'].map(df2.set_index('date')['column1'])
    

    还要检查dtypes 在两个DataFrames 中是否相同:

    print (df1['date'].dtype)
    print (df2['date'].dtype)
    

    如果不是,将列转换为datetime,例如:

    df1['date'] = pd.to_datetime(df1['date'])
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2022-01-16
      • 2018-01-13
      • 1970-01-01
      • 2021-04-21
      相关资源
      最近更新 更多