【问题标题】:How to combine two dataframes with different shapes on multiple column values如何在多个列值上组合具有不同形状的两个数据框
【发布时间】:2022-01-24 17:34:58
【问题描述】:

提前感谢您抽出时间和精力来回答。我正在尝试组合具有不同形状的两个数据框(一个包含当前数据,另一个包含未来预测数据)

例如,

df1 = ['Date', 'ColA', 'ColB', 'ColC', 'GroupNumber']

df2 = ['Date', 'Col1', 'Col2', 'Col3', 'GroupNumber']

其中 df1 的形状为 (3000, 5),df2 的形状为 (5000, 5)。

我想将这两个数据框组合在相同的“日期”和“组号”列值上。

最后,它看起来像:

final_df = ['Date', 'ColA', 'ColB', 'ColC','Col1', 'Col2', 'Col3', 'GroupNumber'] with the shape of (5000, 8)

由于 df1 小于 df2,因此合并时某些行会为空。

当然,这些形状只是我想出的一个任意数字作为示例。我试过了

final_df = df1.join(df2, lsuffix='_actual', rsuffix='_prediction', on='GroupNumber','Date') 

但这并不完全有效。如果有人有建议,我将不胜感激。谢谢!

【问题讨论】:

  • pd.concat([df1, df2], axis=1)怎么样
  • 我需要将两个形状不同的dfs组合起来。所以简单的连接对我不起作用

标签: python pandas dataframe


【解决方案1】:

您可以使用pandas merge 执行left join

import pandas as pd
final_df = pd.merge(df1,df2,on=['GroupNumber','Date'],how='left')

【讨论】:

  • 您好,感谢您的意见。当我尝试您建议的代码时,我得到:“ValueError:您正在尝试合并对象和 datetime64[ns] 列。如果您希望继续,您应该使用 pd.concat”
  • 听起来您的日期列之一是日期时间类型,而另一个不是。确保它们在合并之前具有相同的类型。
  • 谢谢,成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多