我有以下的數據幀:如何通過不同的列組值
df =
ID HOUR GROUP_1 GROUP_2 GROUP_3 DURATION
1 7 AAA AAA BBB 20
2 7 BBB AAA CCC 22
3 7 BBB BBB BBB 21
4 8 AAA AAA AAA 23
5 8 CCC AAA CCC 25
6 9 CCC CCC CCC 28
如下我可以計算平均DURATION
每HOUR
:
grouped = df.groupby("HOUR").DURATION.mean().reset_index()
現在我需要還組由entried存儲在GROUP_1
,GROUP_2
和GROUP_3
中的組值。我想考慮每行只發生一次組,即,如果AAA
在第一行中重複兩次,則應該只考慮一次。
結果應該是:
result =
GROUP HOUR MEAN_DURATION
AAA 7 21
AAA 8 24
BBB 7 21
...
我知道如何計算每排各組的次數,但不知道如何把一切融合在一起,以獲得期望的結果:
df.filter(regex="^GROUP").stack().reset_index(level=1, drop=True).reset_index().drop_duplicates()[0].value_counts()
如果我想添加一個restrction對於只考慮團體'AAA'和'從列表'to_be_considered = 「AAA」, 「BBB」]'BBB'。可能嗎? – Dinosaurius
您可以使用'.isin()'方法過濾結果。即如果上面的結果是「mean_df」,那麼'mean_df [mean_df.GROUP.isin(to_be_considered)]'應該過濾出其他分組結果。 – Psidom