我有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!
>>>
答案 0 :(得分:1)
IIUC,在将每个列的索引设置为所有公共列之后使用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()
答案 1 :(得分:0)
你可以做到
df_master['unique1'] = df_reference1['unique1']
这将创建新行&#39; unique1&#39;。看你的索引!