python - pandas 中每组的数据操作

标签 python pandas dataframe pandas-groupby

我正在使用结构如下的数据集:

import pandas as pd

dat = pd.DataFrame({'id': [1,1,1,2,3,4,5,5], 'period':[1,2,3,1,2,1,2,4], 'dsti':[0.1,0.2,0.5,0.2,0.3,0.3,0.4,0.2]})
>>>dat
   id  period  dsti
0   1       1   0.1
1   1       2   0.2
2   1       3   0.5
3   2       1   0.2
4   3       2   0.3
5   4       1   0.3
6   5       2   0.4
7   5       4   0.2

我想按 ndg 对该表进行分组变量并删除所有只有一个条目的观察值。此外,对于每个客户,我需要计算 dsti 的差异。期间之间除以月数:dsti2 = (dsti_period_n - dsti_period_(n-1))/(period_n - period_(n-1)) 。例如。对于 5 号客户,新变量应为 (0.2-0.4)/(4-2)。

最终数据集应如下所示:

    id  period  dsti dsti2
0    1       1   0.1  0.1
1    1       2   0.2  0.3
2    5       2   0.4 -0.1

有什么想法可以完成这个相当令人费解的转变吗?

最佳答案

用途:

#filter out unique rows by id
dat = dat[dat['id'].duplicated(keep=False)].copy()
#get difference per id
df = dat.groupby('id').diff(-1)
#division for new column, df is assigned to dat, because same index in both
dat['dsti2'] = df['dsti'].div(df['period'])
#remove missing rows by dsti2 column
dat = dat.dropna(subset=['dsti2'])
print (dat)
   id  period  dsti  dsti2
0   1       1   0.1    0.1
1   1       2   0.2    0.3
6   5       2   0.4   -0.1

关于python - pandas 中每组的数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57854832/

相关文章:

r - 更改数据框中的列

python - Django Apache - 以根用户身份运行脚本

python - 如何在 Python 中输入矩阵(二维列表)?

Python Pandas 根据动态数量的列创建列

python - 复制 Pandas DF N 次

python - 如何根据第一个特定数字和其余数字剪切字符串

r - 如何根据条件显示数据框列的平均值

python - 检查数据框中一行中多个列的重复值。

python - 测试枚举列表中的成员身份失败

python - Pandas 元素比较和创建选择