在這個小數據幀:如何使用lambda表達式合併兩個計數值?
d1 = pd.read_csv('to_count.mcve.txt', sep='\t')
pos M1 M2 F1 F2
23 A,B,A,C,D A,C,B A D
24 A,B,B,C,B A,B,A B D
28 C,B,C,D,E B,C E D
我想數多少在F1和F2的值都在M1和M2。作爲一個學習過程,我把它分解成了幾部分。
我可以這樣做:
d1_count = d1.apply(lambda x: x.loc[::].str.count(x.F1), 1)
輸出:
M1 M2 F1 F2
pos
0 23 2 1 1 0
1 24 3 1 1 1
2 28 1 0 1 0
而且,同樣
d2_count = d1.apply(lambda x: x.loc[::].str.count(x.F2), 1)
與輸出:
M1 M2 F1 F2
pos
0 23 1 0 0 1
1 24 3 1 1 1
2 28 2 1 0 1
但是,我想下面的最終預期輸出:
我想算F1和F2在一個線和輸出把由F2分離F1值用逗號
我們可以離開F1和F2放棄這不是一個大問題。
M1 M2
pos
0 23 2,1 1,0
1 24 3,3 1,1
2 28 1,2 0,1
我試圖用加入,但失敗了,然後追加(其中din't工作,因爲我正好預期):
d3_count = d1.apply(lambda x: x.loc[::].str.count(x.F1).append(x.loc[::].str.count(x.F2)), 1)
M1 M2 F1 F2 M1 M2 F1 F2
pos
0 23 2 1 1 0 1 0 0 1
1 24 3 1 1 1 3 1 1 1
2 28 1 0 1 0 2 1 0 1
任何輸入與解釋,請。
謝謝,
你是怎麼得到'3,3 1,1'的?它不是應該是'3,0,0'還是'3,0 1,0'? – DyZ
哎呀,這應該是一個錯字。我將不得不糾正它 – everestial007
@DYZ:其實沒有錯別字。我剛剛更新了** F1和F2 **的計數以使問題更清楚。你能看看嗎? – everestial007