2017-03-11 137 views
0

在下面的熊貓數據幀:如何合併來自兩個pandas數據框的值作爲相同的行和列索引/值?

d1 = pd.read_csv('to_count.mcve.txt', sep='\t') 
d1 = d1.set_index(['pos'], append=True) 

     M1   M2  F1 F2 
    pos       
0 23 A,B,A,C,D A,C,B A D 
1 24 A,B,B,C,B A,B,A B B 
2 28 C,B,C,D,E B,C  E C 

我用下面的代碼做一些計數:

hapX_count = pd.DataFrame() 
hapY_count = pd.DataFrame() 
for index, lines in d1.iterrows(): 
    hap_x = lines['F1'] 
    hap_y = lines['F2'] 
    x_count = lines.apply(lambda x: x.count(hap_x)/2 if len(x) > 5 else x.count(hap_x)) 
    y_count = lines.apply(lambda x: x.count(hap_y)/2 if len(x) > 5 else x.count(hap_y)) 

    hapX_count = hapX_count.append(x_count) 
    hapY_count = hapY_count.append(y_count) 

輸出爲hapX_count:

print(hapX_count) 

     F1 F2 M1 M2 
(0, 23) 1.0 0.0 1.0 1.0 
(1, 24) 1.0 1.0 1.5 1.0 
(2, 28) 1.0 0.0 0.5 0.0 

輸出爲hapY_count:

print(hapY_count) 

     F1 F2 M1 M2 
(0, 23) 0.0 1.0 0.5 0.0 
(1, 24) 1.0 1.0 1.5 1.0 
(2, 28) 0.0 1.0 1.0 1.0 

如何將這些數據框中的值(具有相同的columnrow索引)與逗號組合起來?

預期的輸出,如:

  F1  F2  M1  M2 
(0, 23) 1.0,0.0 0.0,1.0 1.0,0.5 1.0,0.0 
same for other lines... 

感謝,

回答

1

你可以繼續做拼接裏面的for循環。但是,如果您在事後設置了連接並希望它們之間用逗號分隔,那麼我認爲您可以將數據變爲字符串而不是浮動。如果是這樣的話,你知道,列和索引是相同的,以相同的順序,你可以這樣做:

df = hapX_count.astype(str) + ',' + hapY_count.astype(str) 
+0

對不起,符合市場預期,這是行不通的。它會合並每個單元格中的值,但不同的單元格值將與不同的單元格值合併。我也嘗試在for循環內連接,但沒有運氣。 – everestial007

相關問題