Pandas每月从数据帧中统计ID数

2024-09-30 16:40:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用户数据框架,这些用户在一个月内执行特定任务的次数不多。我有一些这样的数据。(无法共享真实数据,因此生成一个虚拟df,如下所示)

df = pd.DataFrame(np.random.randint(1, 12,size=(100, 2)), columns=list('AB'))
df['Month'] = df.apply(lambda x: f"{x['A']}-2020", axis=1)
df['id'] = "UID"+ df['B'].astype(str)
df = df.drop(columns=['A', 'B'])
df.head(10)

如下所示:

    Month   id
0   4-2020  UID3
1   5-2020  UID8
2   9-2020  UID3
3   5-2020  UID6
4   8-2020  UID7
5   8-2020  UID5
6   7-2020  UID11
7   10-2020 UID5
8   1-2020  UID10
9   4-2020  UID6

我想知道每月UID的数量,不管它是哪个id

df.groupby(["Month", "id"]).size().reset_index(name='Count')

它应该显示-

   Month   id  
 '1-2020'  3 
 '2-2020'  5
 '3-2020'  n
 ...

一年中的所有月份都是如此。不知道如何进行分组


Tags: columns数据用户框架iddataframedfuid
2条回答

可以将^{}^{}结合使用

代码如下:

df.groupby('Month').id.nunique().reset_index()

结果如下所示:

      Month  id
0    1-2020  10
1   10-2020   7
2   11-2020   7
3    2-2020   5
4    3-2020   7
5    4-2020   5
6    5-2020   4
7    6-2020   7
8    7-2020   5
9    8-2020   7
10   9-2020   7

如果需要上述输出:

df.groupby("Month")['id'].nunique()

相关问题 更多 >