簡體   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