簡體   English   中英

通過列操作合並熊貓數據框

[英]Merge pandas dataframe, with column operation

我搜索了存檔文件,但是沒有找到想要的文件(可能是因為我不太清楚要使用哪些關鍵字)

這是我的問題:我有一堆數據幀需要合並; 我還想用數據幀中的總和來更新列子集的值。

例如,我有兩個數據框df1和df2:

df1=pd.DataFrame([ [1,2],[1,3], [0,4]], columns=["a", "b"])
df2=pd.DataFrame([ [1,6],[1,4]], columns=["a", "b"])

    a   b           a   b
0   1   2       0   1   5
1   1   3       2   0   6
2   0   4       

合並后,我想用匹配記錄的總和來更新列“ b”,而列“ a”應該像以前一樣像df1(或df2,並不在乎):

    a   b
0   1   7
1   1   3
2   0   10

現在,將其擴展為合並三個或更多數據幀。

有直接的內置技巧可以做到這一點嗎? 還是我需要一行一行地處理?

=====編輯/澄清=====

在實際示例中,每個數據幀可能包含不在其他數據幀中的索引。 在這種情況下,合並的數據幀應全部包含它們,並用sum(或其他某種操作)更新共享的條目/索引。

僅部分解決方案,尚未完成。 但是要點解決了:

df3 = pd.concat([df1, df2], join = "outer", axis=1)
df4 = df3.b.sum(axis=1)

df3將具有兩個“ a”列和兩個“ b”列。 df3.b上的sum()函數添加兩個“ b”列,並忽略NaN。 現在df4擁有列“ b”,列df1和df2的“ b”列之和以及所有索引。

雖然沒有解決列“ a”。 在我的實際情況下,df3.a中的NaN數量很少,而df3.a中的其他NaN應該相同。 我還沒有找到在df4中創建列“ a”並用非NaN填充值的直接方法。 現在,搜索“計數”函數以獲取df3.a行中元素的出現(想象它具有幾十個“ a”列)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM