首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python熊猫在序列中合并具有相同值的行并重新排序(在序列中放置重复项)

问python熊猫在序列中合并具有相同值的行并重新排序(在序列中放置重复项)
EN

Stack Overflow用户
提问于 2018-11-12 10:14:14
回答 2查看 72关注 0票数 1

让我说我有下表:

代码语言:javascript
复制
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内合并行(如果它们是按顺序排列的话,则删除重复的行),然后重新定义序号。

代码语言:javascript
复制
ID    FRUIT    ORDER
01    apple    1
01    peach    2
01    apple    3
02    melon    1
02    apple    2

编辑:我忘记重新排序了。如上所示:顺序应该以迭代的方式重新排列,。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-12 10:26:25

使用boolean indexing仅用于筛选第一个连续值和用于新排序的cumcount:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2018-11-12 10:45:01

我相信这样做很容易:

代码语言:javascript
复制
>>> 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      2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53259974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档