我有 3 个 CSV 文件。每个都有第一列作为人的(字符串)名称,而每个数据框中的所有其他列都是该人的属性。
如何将所有三个 CSV 文档“连接”在一起以创建单个 CSV,其中每一行都具有人员字符串名称的每个唯一值的所有属性?
pandas 中的 join()
函数指定我需要一个多索引,但我对分层索引方案与基于单个索引进行连接有什么关系感到困惑。
原文由 lollercoaster 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有 3 个 CSV 文件。每个都有第一列作为人的(字符串)名称,而每个数据框中的所有其他列都是该人的属性。
如何将所有三个 CSV 文档“连接”在一起以创建单个 CSV,其中每一行都具有人员字符串名称的每个唯一值的所有属性?
pandas 中的 join()
函数指定我需要一个多索引,但我对分层索引方案与基于单个索引进行连接有什么关系感到困惑。
原文由 lollercoaster 发布,翻译遵循 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 许可协议
2 回答4.3k 阅读✓ 已解决
2 回答874 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答877 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
4 回答2.6k 阅读
3 回答917 阅读✓ 已解决
Zero 的回答 基本上是一个
reduce
操作。如果我有多个数据框,我会将它们放在这样的列表中(通过列表推导或循环或诸如此类的生成):假设他们有一个共同的列,例如
name
在您的示例中,我将执行以下操作:这样,您的代码应该适用于您想要合并的任何数量的数据帧。