我有一個帶有列的資料框Value,Type和Subtype。我想先將它分組Type,然后再分組,Subtype但第二個 groupby 應該只針對特定組(例如,僅針對一個 group Type=="Type 2)。我怎樣才能以最優雅的方式做到這一點?這是我的代碼 - 我想SubType只為 進行第二次分組(按)Type 2,而不是兩者。對于Type 1聚合值應該等于所有的總和SubTypes。
import pandas as pd
df = pd.DataFrame()
df["Type"] = ["1", "2", "1", "2", "1", "2"]
df["SubType"] = ["A", "A","B", "B","C", "C"]
df["Value"] = [1,2,3,4,5,6]
gb = df.groupby(["Type", "SubType"]).agg({"Value": sum})
gb
Value
Type SubType
1 A 1
B 3
C 5
2 A 2
B 4
C 6
uj5u.com熱心網友回復:
IIUC,您可以將 2 的“A、B、C”轉換SubType為Type新SubType的“X”:
out = (df.assign(SubType=df['SubType'].mask(df['Type'] == '2', 'X'))
.groupby(['Type', 'SubType'], as_index=False)['Value'].sum())
print(out)
# Output
Type SubType Value
0 1 A 1
1 1 B 3
2 1 C 5
3 2 X 12
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/489299.html
標籤:python-3.x 熊猫 通过...分组
