0

1 id 的表样本,在原始 df 中存在多个 id。

ID 传奇 日期 running_count
101 X 24-07-2021 3
101 24-07-2021 5
101 X 25-07-2021 4
101 25-07-2021 6

我想创建一个新列,我必须根据 id、图例和日期执行 running_count 的除法 - (X/Y) 用于特定 id 的日期 24-07-2021 等等。

我该如何进行计算?

4

1 回答 1

1

如果X, Y每个id可能使用相同的顺序:

df['new'] = df['running_count'].div(df.groupby(['id','date'])['running_count'].shift(-1))

print (df)
    id legend        date  running_count       new
0  101      X  24-07-2021              3  0.600000
1  101      Y  24-07-2021              5       NaN
2  101      X  25-07-2021              4  0.666667
3  101      Y  25-07-2021              6       NaN

如果可能的话,改变输出:

df1 = df.pivot(index=['id','date'], columns='legend', values='running_count')

df1['new'] = df1['X'].div(df1['Y'])

df1 = df1.reset_index()
print (df1)
legend   id        date  X  Y       new
0       101  24-07-2021  3  5  0.600000
1       101  25-07-2021  4  6  0.666667
于 2021-07-26T05:59:22.837 回答