簡體   English   中英

對列中的多個值進行分組

[英]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.

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