python - Pandas 合并 5 个 csv 文件,只有 1 个不同的列名

标签 python csv pandas merge

我有 5 个 csv 文件,我正在尝试使用 Python Pandas 合并这些文件,而且我正在运行 64 位 Python,导致内存问题。

所有 5 个 csv 文件都具有相同的列名称: ['A'、'B'、'C'、...'Start_time'、'end_time'、'Unique_column']

此处 Unique_column 是每个 CSV 文件的不同列名称。所以我需要将所有 5 个文件相互合并,所以最后我将得到 DataFrame 为

['A'、'B'、'C'、...'Start_time'、'end_time'、'Unique_column1'、'Unique_colum2'、...'Unique_colum5']

pandas.merge还是pandas.concat方法?

更新:

>>> import os
>>> import glob
>>> import numpy as np
>>> import pandas as pd
>>> dir_name = r'C:\Users\data'
>>> dfs = []
>>> files = glob.glob(os.path.join(dir_name, '*.csv'))
>>> for f in files:
...   df = pd.read_csv(f)
...   dfs.append(df)
...
>>> common_cols = ['Target', 'POS', 'Start_Week', 'End_Week', 'Measure_Metric']
>>> res = pd.concat([df.set_index(common_cols) for df in dfs], axis=1).reset_index()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Python27x64\lib\site-packages\pandas\tools\merge.py", line 846, in concat
    return op.get_result()
  File "c:\Python27x64\lib\site-packages\pandas\tools\merge.py", line 1031, in get_result
    indexers[ax] = obj_labels.reindex(new_labels)[1]
  File "c:\Python27x64\lib\site-packages\pandas\indexes\multi.py", line 1422, in reindex
    raise Exception("cannot handle a non-unique multi-index!")
Exception: cannot handle a non-unique multi-index!
>>>

最佳答案

IIUC,在将每个列的索引设置为所有公共(public)列后使用 pd.concat

假设您已将所有文件导入到列表 dfs

dfs = [df1, df2, df3, df4, df5]

然后像这样连接

common_cols = ['A', 'B', 'C', 'Start_time', 'end_time']
pd.concat([df.set_index(common_cols) for df in dfs], axis=1).reset_index()

关于python - Pandas 合并 5 个 csv 文件,只有 1 个不同的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39315923/

相关文章:

python - 如何在 pandas 中剪切连续变量

python - 我如何从字典中读取数据,无论字典中的输入是什么,它都会乘以一个名为“total”的变量?

python - 如何在 Keras 中使用预训练的 CNN 实现 Siamese 网络?

python - 使用 for 循环创建嵌套字典

python - 如何替换数据框中某个字符的所有实例?

python - 为什么 << export PYTHONPATH=$PYTHONPATH >> 将当前工作目录放在 sys.path 上?

ruby - 在 Ruby 中处理大型 CSV 文件

python - 在 CSV 中找到的匹配总和

python - 基于具有空白行的列向数据框添加新列

python - 基于从 Pandas DataFrame 中其他 2 列的值进行条件选择的新列