繁体   English   中英

在 dataframe 中创建新列

[英]Creating new column in dataframe

我有一个 dataframe 具有以下列:

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/(数据帧中存在的实际日期计数)计数的约束生成。

例如:

预期 output:

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

任何人都可以帮助实现同样的目标。

谢谢

使用groupbytransform

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM