让我说我有下表:
ID FRUIT ORDER
01 apple 1
01 apple 2
01 peach 3
01 apple 4
02 melon 1
02 apple 2
02 apple 3
02 apple 4现在,当值等于时,我想在相同的ID内合并行(如果它们是按顺序排列的话,则删除重复的行),然后重新定义序号。
ID FRUIT ORDER
01 apple 1
01 peach 2
01 apple 3
02 melon 1
02 apple 2编辑:我忘记重新排序了。如上所示:顺序应该以迭代的方式重新排列,。
发布于 2018-11-12 10:26:25
使用boolean indexing仅用于筛选第一个连续值和用于新排序的cumcount:
a = df['ID'] + df['FRUIT']
#if necessary
#a = df['ID'].astype(str) + df['FRUIT']
df = df[a.ne(a.shift())]
df['ORDER'] = df.groupby('ID').cumcount().add(1)
print (df)
ID FRUIT ORDER
0 01 apple 1
2 01 peach 2
3 01 apple 3
4 02 melon 1
5 02 apple 2发布于 2018-11-12 10:45:01
我相信这样做很容易:
>>> df
ID FRUIT ORDER
0 01 apple 1
1 01 apple 2
2 01 peach 3
3 01 apple 4
4 02 melon 1
5 02 apple 2
6 02 apple 3
7 02 apple 4
>>> df[df['FRUIT'] != df['FRUIT'].shift(1)]
ID FRUIT ORDER
0 01 apple 1
2 01 peach 3
3 01 apple 4
4 02 melon 1
5 02 apple 2https://stackoverflow.com/questions/53259974
复制相似问题