我有一个如下的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