我有以下的数据帧:如何通过不同的列组值
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