我有5个csv文件,我正在尝试使用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!
>>>发布于 2016-09-04 10:35:20
在将索引设置为所有公共列之后,使用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()发布于 2016-09-04 10:38:48
你可以做到
df_master['unique1'] = df_reference1['unique1']这将创建新行'unique1‘。注意你的索引!
https://stackoverflow.com/questions/39315923
复制相似问题