我會盡量直截了當。所以我有一個包含 100 列的 df,我想對其中的兩個進行分組,同時獲得另外 2 列的總和。為此,我已經使用了 groupby agg 函式。問題是,在這樣做的同時,我仍然想保留剩余的 96 列,并且我想保留這 96 列中每個值的第一次出現。為此,我正在考慮諸如洗掉重復項并保持 = 'first '。
我搜索了一種可以一次性完成的方法,但在這一點上,我愿意接受您可能提出的任何建議。
注意:出于某種原因,我沒有包含示例 df 和所需的輸出,因為我想根據建議自己嘗試一下,我不想直接從某人那里獲得解決方案。
提前致謝,
uj5u.com熱心網友回復:
我認為在 groupby 物件上使用兩個單獨的操作并在之后加入它們比單行更清晰。這是一個最小的示例,在 1 列上分組:
df = pd.DataFrame(
[
("bird", "Falconiformes", 389.0, 5.5, 1),
("bird", "Psittaciformes", 24.0, 4.5, 2),
("mammal", "Carnivora", 80.2, 33.3, 1),
("mammal", "Primates", np.nan, 33.7, 2),
("mammal", "Carnivora", 58, 23, 3),
],
index=["falcon", "parrot", "lion", "monkey", "leopard"],
columns=("class", "family", "max_speed", "height", "order"),
)
print(df, "\n")
grouped = df.groupby('class')
df_sum = grouped[['max_speed', 'height']].agg(sum)
df_first = grouped['order'].first()
df_out = pd.concat([df_sum, df_first], axis=1)
print(df_out)
輸出:
class family max_speed height order
falcon bird Falconiformes 389.0 5.5 1
parrot bird Psittaciformes 24.0 4.5 2
lion mammal Carnivora 80.2 33.3 1
monkey mammal Primates NaN 33.7 2
leopard mammal Carnivora 58.0 23.0 3
max_speed height order
class
bird 413.0 10.0 1
mammal 138.2 90.0 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/448641.html
