Python 如何在数据帧中查找重复项
编辑 假设我有以下熊猫系列:Python 如何在数据帧中查找重复项,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,编辑 假设我有以下熊猫系列: >>>p 0 0.0 1 0.0 2 0.0 3 0.3 4 0.3 5 0.3 6 0.3 7 0.3 8 1.0 9 1.0 10 1.0 11 0.2 12 0.2 13 0.3 14 0.3 15 0.3 我需要识别每个连续重复序列——它的第一个和最后一个索引。使用上面的示例,我需要识别0.3的第一个序列(从索引3到7),独
>>>p
0 0.0
1 0.0
2 0.0
3 0.3
4 0.3
5 0.3
6 0.3
7 0.3
8 1.0
9 1.0
10 1.0
11 0.2
12 0.2
13 0.3
14 0.3
15 0.3
我需要识别每个连续重复序列——它的第一个和最后一个索引。使用上面的示例,我需要识别0.3的第一个序列(从索引3到7),独立于0.3的最后一个序列(从索引13到15)
使用Series.duplicated是不够的,因为:
*使用keep='first'会将重复项的所有第一个实例标记为False,但会将索引13保留为True,因为它不是0.3的第一次出现
*“最后一次”也是如此
*keep=False仅将所有条目标记为True
谢谢大家! 我认为需要一个技巧来比较不等于with和last的ed值: 如果还希望将值复制到新列,请使用以下方法进行位更改:
如果需要新列:
df['count'] = df['a'].ne(df['a'].shift()).cumsum()
print (df)
a count
0 0.0 1
1 0.0 1
2 0.0 1
3 0.3 2
4 0.3 2
5 0.3 2
6 0.3 2
7 0.3 2
8 1.0 3
9 1.0 3
10 1.0 3
11 0.2 4
12 0.2 4
13 0.3 5
14 0.3 5
15 0.3 5
这似乎是一个简单的问题,但如果没有数据,很难可视化。显示一些列中的示例数据计数值在本网站和其他地方的很多地方都有介绍。你的解决方案在哪里?即使没有这些,您识别连续值的基本循环代码(另一个覆盖良好的应用程序)在哪里?请相应地阅读和编辑您的帖子。谢谢并道歉。我试着快速回答这个问题,但没有意识到它是如此的不清楚。我编辑并添加了一个简单的示例来演示这个问题。提前谢谢你!这太完美了。正是我需要的。非常感谢你的帮助!!
s = df['a'].ne(df['a'].shift()).cumsum()
a = df.loc[~s.duplicated(), 'a']
b = s.drop_duplicates(keep='last')
df = pd.DataFrame({'first':a.index, 'last':b.index, 'val':a})
print (df)
first last val
0 0 2 0.0
3 3 7 0.3
8 8 10 1.0
11 11 12 0.2
13 13 15 0.3
df['count'] = df['a'].ne(df['a'].shift()).cumsum()
print (df)
a count
0 0.0 1
1 0.0 1
2 0.0 1
3 0.3 2
4 0.3 2
5 0.3 2
6 0.3 2
7 0.3 2
8 1.0 3
9 1.0 3
10 1.0 3
11 0.2 4
12 0.2 4
13 0.3 5
14 0.3 5
15 0.3 5