一尘不染

Python-pandas三向联接列上的多个数据框

python

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

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

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


阅读 462

收藏
2020-02-19

共1个答案

一尘不染

假设进口:

import pandas as pd

John Galt的答案基本上是一项reduce手术。如果我有几个数据帧,则将它们放在这样的列表中(通过列表推导或循环或其他方式生成):

dfs = [df0, df1, df2, dfN]

假设它们有一些共同的列,例如name你的示例,我将执行以下操作:

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

这样,你的代码应该可以与要合并的任意数量的数据框一起使用。

编辑2016年8月1日:对于使用Python 3的用户:reduce已移入functools。因此,要使用此功能,你首先需要导入该模块:

from functools import reduce
2020-02-19