【问题标题】:How do I join two pandas dataframes? [duplicate]如何加入两个熊猫数据框? [复制]
【发布时间】:2020-10-01 08:44:41
【问题描述】:

我有两个数据框。 df1 的形状为 (64, 10),而 df2 的形状为 (64, 1)。

我一直在尝试连接这两者,但它显示错误。

这已经困扰我一段时间了。谢谢!


pdff = pd.concat([df1, df2], ignore_index=True, sort=False, axis=1)
  File "C:\Python37\lib\site-packages\pandas\core\reshape\concat.py", line 287, in concat
    return op.get_result()
  File "C:\Python37\lib\site-packages\pandas\core\reshape\concat.py", line 503, in get_result
    mgrs_indexers, self.new_axes, concat_axis=self.bm_axis, copy=self.copy,
  File "C:\Python37\lib\site-packages\pandas\core\internals\concat.py", line 84, in concatenate_block_managers
    return BlockManager(blocks, axes)
  File "C:\Python37\lib\site-packages\pandas\core\internals\managers.py", line 149, in __init__
    self._verify_integrity()
  File "C:\Python37\lib\site-packages\pandas\core\internals\managers.py", line 326, in _verify_integrity
    raise construction_error(tot_items, block.shape[1:], self.axes)
ValueError: Shape of passed values is (4159, 11), indices imply (127, 11)

【问题讨论】:

  • 对两个数据帧执行 reset_index() 并尝试连接。
  • 你的错误似乎不同意ValueError: Shape of passed values is (4159, 11), indices imply (127, 11) 听起来你需要mergejoinmap
  • 您的意思是像 SQL 中的 join(通常由 pandas 中的 merge 完成)还是 append(在这种情况下您需要相同数量的列)? - 无论哪种方式,这都不是 concat。
  • @LazyCoder,非常感谢。今天学到了一些新东西。
  • @Manakin,是的,我花了一些时间才弄清楚。谢谢。

标签: python pandas dataframe concat


【解决方案1】:

看来您需要使用“加入”。试试这个:

df1.join(df2,on="key_colname")

还有设置后缀的参数(lsuffix 和 rsuffix),当然还有如何加入(“how”参数可以设置为:左、右、外、内。默认情况下是左)。

【讨论】:

  • @Konstantly Maciej Lachowicz,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 2019-01-07
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多