dt = {'id': [120,120,120,120,121,121,121], 'day': [0, 1,2,3,0,1,2], 'value': [[0.5,3.4,2.7],[0.45,3.4,0.7],[0.25,0.4,0.7],[0.15,0.34,0.17],[0.35,3.4,2.7],[0.5,3.44,2.57],[0.5,0.34,0.37]]}
df = pd.DataFrame(data=dt)
day id value
0 0 120 [0.5, 3.4, 2.7]
1 1 120 [0.45, 3.4, 0.7]
2 2 120 [0.25, 0.4, 0.7]
3 3 120 [0.15, 0.34, 0.17]
4 0 121 [0.35, 3.4, 2.7]
5 1 121 [0.5, 3.44, 2.57]
6 2 121 [0.5, 0.34, 0.37]
我有一个
pandas dataframe
。我希望序列column "day"
最大值高达1。对于值大于1的column day
,我想删除它的初始行,然后将序列重置为[0-1]也就是说,在这种情况下,
column"id"=120
的“day”列有两个额外的值2和3。在这种情况下,我想删除它们的前两行,然后将day的列值替换为(0,1)。结果:
day id value
0 0 120 [0.25, 0.4, 0.7]
1 1 120 [0.15, 0.34, 0.17]
2 0 121 [0.5, 3.44, 2.57]
3 1 121 [0.5, 0.34, 0.37]
最佳答案
按id
和query
分组时,可以减去最大值
m = df.groupby('id').day.transform('max')
df.assign(day=df.day.sub(m - 1)).query('day >= 0')
day id value
2 0 120 [0.25, 0.4, 0.7]
3 1 120 [0.15, 0.34, 0.17]
5 0 121 [0.5, 3.44, 2.57]
6 1 121 [0.5, 0.34, 0.37]
关于python - 删除满足列值条件的 Pandas 数据框的初始行,同时保持列中的序列值不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51969376/