我有一个dataframe,看起来像这样:
import pandas as pd
df = pd.DataFrame({/
'Time': ['0','0','0','1','1','1','2','2','2'],/
'Animal': ['Cat', 'Dog', 'Pig', 'Cat', 'Dog', 'Pig', 'Cat', 'Dog', 'Pig'],/
'Displacement': ['1', '3', '2', '4', '2', '3', '1', '4', '6']/
})
我想添加一个名为“RelativeDisplacement”的新列,它的位移值减去动物在零时间的位移值
我可以通过迭代行来使它工作,例如。
rDisplacement0 = df[df['Time']=='0'][df['Animal']=='Cat']['Displacement'][0]
rDisplacements = []
for row in df.iterrows():
if row[1]['Animal'] == 'Cat':
rDisplacements.append(row[1]['Displacement'] - rDisplacement0 )
但这似乎不是一个很好的解决方案。我相信会有一个很好的矢量化方法来做到这一点,但我不能工作出来。任何帮助将不胜感激。
1条答案
按热度按时间rggaifut1#
您可以
map
时间0的值:或者,如果时间按升序排序,则使用
groupby.transform
:输出: