首页 > 解决方案 > 计算组合列的唯一值,并将它们放入数据框中

问题描述

我正在尝试计算组合列的唯一值,并将它们放入数据框中,我有两列。一列称为“市政”,另一列称为“日期”。市镇有 27 个不同的名称,而日期每个市镇有 151 个日期,总共 4,077 行。我可以将这两个放在一个数据框中,但我无法得到计数。IE

days1 = (df['Municipality'])
days = days1[5247:9324].reset_index(drop=True)
ddate1 = (df['Date'])
ddate = ddate1[5247:9324].reset_index(drop=True)

frames = [days, ddate]

result = pd.concat(frames, axis = 1)
result

    Municipality    Date
0   Alta Floresta D'Oeste   2020-03-27
1   Alta Floresta D'Oeste   2020-03-28
2   Alta Floresta D'Oeste   2020-03-29
3   Alta Floresta D'Oeste   2020-03-30
4   Alta Floresta D'Oeste   2020-03-31
... ... ...
4072    Alto Paraíso    2020-08-20
4073    Alto Paraíso    2020-08-21
4074    Alto Paraíso    2020-08-22
4075    Alto Paraíso    2020-08-23
4076    Alto Paraíso    2020-08-24
4077 rows × 2 columns

目标是拥有每个自治市 (27) 并计算每个自治市的日期,每个自治市应为 151。对此很陌生,所以感谢您的帮助。

标签: pythonpandasdataframe

解决方案


我有一种感觉,你正在寻找groupby.transform。这样,您将添加一个列来计算每个市镇的日期。

import pandas as pd
result['date_count'] = result.groupby('Municipality')['Date'].transform('count')

result

            Municipality       Date  date_count
0  Alta Floresta D'Oeste 2020-03-27           5
1  Alta Floresta D'Oeste 2020-03-28           5
2  Alta Floresta D'Oeste 2020-03-29           5
3  Alta Floresta D'Oeste 2020-03-30           5
4  Alta Floresta D'Oeste 2020-03-31           5
5           Alto Paraíso 2020-08-20           5
6           Alto Paraíso 2020-08-21           5
7           Alto Paraíso 2020-08-22           5
8           Alto Paraíso 2020-08-23           5
9           Alto Paraíso 2020-08-24           5

在您自己的数据集中,“date_count”列应显示为 151。您可以在groupby.transform 此处进一步准备好。


推荐阅读