2016-08-02 108 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