Python熊猫:对于一列中的每个唯一值,在另一列中找到一个最小值,并从另一列的值中减去它



我有一个如下的df:

df = pd.DataFrame({'Person': ['Alex', 'Alex', 'Alex', 'Eva', 'Eva', 'Eva'],
'Time': [30, 40, 60, 35, 55, 57]})

我想创建一个专栏,说明一个人的最短时间与时间的差异:

df = pd.DataFrame({'Person': ['Alex', 'Alex', 'Alex', 'Eva', 'Eva', 'Eva'],
'Time': [30, 40, 60, 35, 55, 57],
'Difference': [0, 10, 30, 0, 20, 22})

我试过groupby((,但我一定做错了。最好的方法是什么?非常感谢!

让我们尝试Time减去groupby transform"min"来获得每组当前时间值和最小时间值之间的差值:

df['Difference'] = df['Time'] - df.groupby('Person')['Time'].transform('min')

df:

Person  Time  Difference
0   Alex    30           0
1   Alex    40          10
2   Alex    60          30
3    Eva    35           0
4    Eva    55          20
5    Eva    57          22

有时apply更容易理解

df.groupby('Person')['Difference'].apply(lambda x : x-x.min())
Out[236]: 
0     0
1    10
2    30
3     0
4    20
5    22
Name: Difference, dtype: int64

相关内容

最新更新