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 等等。
我该如何进行计算?
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 等等。
我该如何进行计算?
如果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