熊猫三向连接列上的多个数据框

新手上路,请多包涵

我有 3 个 CSV 文件。每个都有第一列作为人的(字符串)名称,而每个数据框中的所有其他列都是该人的属性。

如何将所有三个 CSV 文档“连接”在一起以创建单个 CSV,其中每一行都具有人员字符串名称的每个唯一值的所有属性?

pandas 中的 join() 函数指定我需要一个多索引,但我对分层索引方案与基于单个索引进行连接有什么关系感到困惑。

原文由 lollercoaster 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 453
2 个回答

Zero 的回答 基本上是一个 reduce 操作。如果我有多个数据框,我会将它们放在这样的列表中(通过列表推导或循环或诸如此类的生成):

 dfs = [df0, df1, df2, ..., dfN]

假设他们有一个共同的列,例如 name 在您的示例中,我将执行以下操作:

 import functools as ft
df_final = ft.reduce(lambda left, right: pd.merge(left, right, on='name'), dfs)

这样,您的代码应该适用于您想要合并的任何数量的数据帧。

原文由 Kit 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你有 3 个数据框,你可以试试这个

# Merge multiple dataframes
df1 = pd.DataFrame(np.array([
    ['a', 5, 9],
    ['b', 4, 61],
    ['c', 24, 9]]),
    columns=['name', 'attr11', 'attr12'])
df2 = pd.DataFrame(np.array([
    ['a', 5, 19],
    ['b', 14, 16],
    ['c', 4, 9]]),
    columns=['name', 'attr21', 'attr22'])
df3 = pd.DataFrame(np.array([
    ['a', 15, 49],
    ['b', 4, 36],
    ['c', 14, 9]]),
    columns=['name', 'attr31', 'attr32'])

pd.merge(pd.merge(df1,df2,on='name'),df3,on='name')

或者,正如 cwharland 所提到的

df1.merge(df2,on='name').merge(df3,on='name')

原文由 Zero 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题