我對 python pandas 模塊很陌生。
假設我有一個資料框或表格,如下所示:
df = pd.DataFrame({
'Column A': [12,12,12, 15, 16, 141, 141, 141, 141],
'Column B':['Apple' ,'Apple' ,'Apple' , 'Red', 'Blue', 'Yellow', 'Yellow', 'Yellow', 'Yellow'],
'Column C':[100, 50, np.nan , 23 , np.nan , 199 , np.nan , 1,np.nan]
})
或者我有一個資料表如下:
| Column A | Column B |Column C
----| -------- | ---------|--------
0 | 12 | Apple |100
1 | 12 | Apple |50
2 | 12 | Apple |NaN
3 | 15 | Red |23
4 | 16 | Blue |NaN
5 | 141 | Yellow |199
6 | 141 | Yellow |NaN
7 | 141 | Yellow |1
8 | 141 | Yellow |NaN
如果 A 列中的值重復,則將 C 列中的相應值相加,并將總和粘貼到新的 D 列中(例如,12 有 3 行,因此我們應將相應值相加 100 50 NaN,求和結果為150 應該存盤在新的列 D) 中。
如果 A 列中的值不重復直接將 C 列值粘貼到新 D 列(如第 3 行)中,但對于 NaN,則應為 0(如第 4 行)。
你能幫我在 python jupyter notebook 中得到這樣的輸出嗎:
| Column A | Column B |Column C |Column D
----- | -------- | ---------|---------|---------
0 | 12 | Apple |100 |150
1 | 15 | Red |23 |23
2 | 16 | Blue |NaN |0
3 | 141 | Yellow |199 |200
uj5u.com熱心網友回復:
df.groupby("Column A", as_index=False).agg(B=("Column B", "first"),
C=("Column C", "first"),
D=("Column C", "sum"))
# Column A B C D
# 0 12 Apple 100.0 150.0
# 1 15 Red 23.0 23.0
# 2 16 Blue NaN 0.0
# 3 141 Yellow 199.0 200.0
uj5u.com熱心網友回復:
這是一種方法
df['Column D'] = df.groupby('Column A')['Column C'].transform('sum')
df = df.drop_duplicates('Column A')
該groupby('Column A')對中的每個唯一值創建一組行Column A。然后['Column C'].transform('sum')為該組中的所有行添加 C 值。
這個總和被保存到 D 列,然后我們可以洗掉重復項以保留第一個
此解決方案中有一些假設。它會將12A 中的所有值組合在一起,即使它們彼此不正確,這可能是也可能不是您想要的。
uj5u.com熱心網友回復:
df = df.set_index(df['Column A']).drop('Column A', axis=1)
df['Column D'] = df.groupby('Column A')['Column C'].sum()
df = df.drop_duplicates(subset=['Column B'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355461.html
下一篇:用Pandas的列的平均值替換值
