[英]groupby multiple values in a column
我在這里有一個 dataframe 的子集:
data = {'Name': ['ch1', 'ch2', 'ch3', 'ch4', 'ch5', 'ch6'],
'Time': [1,2,3,4,5,6],
'Week' : [1, 2, 3, 2, 3, 2]
}
dfx = pd.DataFrame(data)
我需要總結每周的所有時間,所以第 1 周時間是 1,第 2 周時間是 2+4+6,第 3 周時間是 3+5。 我還需要它來查看“周”列並找到所有不同的周,因此對於此示例,有 3 個,但對於另一個 dataframe,它可能是 2 或 4。
最終結果是查看 dataframe 中的一列,找到唯一值 (1,2,3,...n),將這些值中的每一個分組到行中,並將每個值的時間相加。
我嘗試了幾種方法,但沒有什么能真正按照我的意願工作。 我感謝任何幫助或想法。
預期 Output:
Sum
Week 1: 1 1
Week 2: 2 4 6 12
Week 3: 3 5 8
output 可以是數據的單個數據幀,也可以是一個 dataframe,所有三行都包含所有數字和總和。
import pandas as pd
data = {'Name': ['ch1', 'ch2', 'ch3', 'ch4', 'ch5', 'ch6'],
'Time': [1,2,3,4,5,6],
'Week' : [1, 2, 3, 2, 3, 2]
}
dfx = pd.DataFrame(data)
dfx = dfx.groupby('Week')['Time'].sum()
print(dfx)
output:
Week
1 1
2 12
3 8
您可以groupby
"Week", select column "Time",並且可以將多個函數(例如list
構造函數和sum
)傳遞給Groupby.agg來做你想做的事情:
out = dfx.groupby('Week')['Time'].agg(Times=list, Total=sum)
Output:
Times Total
Week
1 [1] 1
2 [2, 4, 6] 12
3 [3, 5] 8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.