2016-08-02 109 views
2

我有两只大熊猫dataframes:一:如何“合并”多个熊猫数据框与索引作为数据框列?

import pandas as pd 
df1 = pd.read_csv('filename1.csv') 
df1 
    A  B 
0 1  22 
1 2  15 
2 5  99 
3 6  1 
.... 

和两个

df2 = pd.read_csv('filename1.csv') 
df2 
    A  B 
0 1  6 
1 3  52 
2 4  15 
3 5  62 
...  

我想这些dataframes为这个新的数据框的索引合并成一个单一的数据帧,与A列。

列是文件名,行是'A'的值。

如果这些索引不存在值,则存在NaN。列名应该是上面* csv的文件名。

filename1 filename2 
1 22   6 
2 15   NaN 
3 NaN   52 
4 NaN   15 
5 99   62 
6 1   NaN 

这是怎么回事?对于两个文件,可以使用pandas.merge(),但是有几十个原始数据帧存在?

回答

2
files = ['file1', 'file2'] 

def read(f): 
    f = f + '.csv' 
    df = pd.read_csv(f, usecols=['A', 'B']) 
    return df.drop_duplicates(subset=['A']).set_index('A').B 

pd.concat([read(f) for f in files], axis=1, keys=files) 

enter image description here

+0

您的解决方案是更加精确,我是不够仔细,看完OP的问题时... – MaxU

+0

@piRSquared感谢。当我为多个文件尝试此操作时,我只是将多个数据框放入一个数据框中,列A和B都包含每个文件。对于多个文件,我如何显式索引列A? – ShanZhengYang

+0

有一些文件,其中A不是第一列。假设我合并了20.如果简单地预先处理文件并删除这些(不必要的)文件,使A成为第一个文件,会更简单吗? – ShanZhengYang