2017-02-09 52 views
2

我有一個多索引的數據幀象下面這樣:一個大熊貓數據幀中的串聯多索引的信息

 col1 col2 col3 col4 
row1 0 A A b b 
     1 B B c c 
row2 0 A B d d 
     1 B B e e 

,並想知道例如串聯信息的最有效方式對於ROW1 + COL1,ROW1 + COL2等,使得我的結果將是:

   col1 col2 col3 col4 
row1   AB AB bc bc 
row2   AB BB de de 

到目前爲止,最好的/唯一的辦法,我可以看到這樣做是:

dx = pd.concat(
    [df[col].unstack().apply(lambda row: row.str.cat(sep=''),axis=1) 
     for col in df.columns], 
    axis=1, 
) 

dx.columns = df.columns 

在實踐中,這個特定的數據框是1.5m行×1000列的大小,所以通過它迭代的更有效的方式將是非常受歡迎的!

回答

2

字符串是sum兼容,所以這將僅僅通過對指數的第一級分組使其:

df.groupby(level=0).apply(sum) 
Out[37]: 
    col1 col2 col3 col4 
row1 AB AB bc bc 
row2 AB BB de de 
+0

感謝Boud,我沒有意識到,大約'sum' – blackgore