我有一个包含以下列的数据框:
date count_e
03/08/2019 31
03/08/2019 31
04/08/2019 47
04/08/2019 47
04/08/2019 47
04/08/2019 47
04/08/2019 47
04/08/2019 47
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
06/08/2019 44
06/08/2019 44
06/08/2019 44
我想创建一个新列“ a_count”,它的约束条件是对于每一行,它将是每个日期的count_e /(数据框中存在的实际日期计数)计数。
例如:
预期输出:
date count_e a_count
03/08/2019 31 31/2
03/08/2019 31 31/2
04/08/2019 47 47/6 (Since actual count of date in dataframe is 6)
04/08/2019 47 47/6
04/08/2019 47 47/6
04/08/2019 47 47/6
04/08/2019 47 .
04/08/2019 47 .
05/08/2019 30 30/9
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
05/08/2019 30
06/08/2019 44
06/08/2019 44
06/08/2019 44
任何人都可以帮助实现相同目标。
谢谢
答案 0 :(得分:1)
使用groupby
和transform
:
df["a_count"] = df["count_e"].div(df.groupby("date")["count_e"].transform('count'))
print (df)
#
date count_e a_count
0 03/08/2019 31 15.500000
1 03/08/2019 31 15.500000
2 04/08/2019 47 7.833333
3 04/08/2019 47 7.833333
4 04/08/2019 47 7.833333
5 04/08/2019 47 7.833333
6 04/08/2019 47 7.833333
7 04/08/2019 47 7.833333
8 05/08/2019 30 3.333333
9 05/08/2019 30 3.333333
10 05/08/2019 30 3.333333
11 05/08/2019 30 3.333333
12 05/08/2019 30 3.333333
13 05/08/2019 30 3.333333
14 05/08/2019 30 3.333333
15 05/08/2019 30 3.333333
16 05/08/2019 30 3.333333
17 06/08/2019 44 14.666667
18 06/08/2019 44 14.666667
19 06/08/2019 44 14.666667