Pandas dataframe找出列中重复值的索引

这里演示找出Panda dataframe 列里重复值的索引,其中索引从0开始。

dataframe数据如下:

id   | name |  
1    |   a  |
2    |   b  |    
4    |   c  |     
9    |   d  |     
3    |   e  |   
4    |   c  |   
9    |   d  |  

期待输入结果为:

4:(2,5),9:(3,6):表示4出现在索引2和5的行,而9出现在索引3和6的行。

方案一:使用groupby和apply lambda

df.groupby('id').apply(
    lambda d: tuple(d.index) if len(d.index) > 1 else None
).dropna()

id
4    (2, 5)
9    (3, 6)
dtype: object

方案二:使用for对groupby迭代

{k: tuple(d.index) for k, d in df.groupby('id') if len(d) > 1}

{4: (2, 5), 9: (3, 6)}

版权声明:著作权归作者所有。

相关推荐

一些有用的pandas代码片段

# 列出dataframe指定列的唯一值 df['Column Name'].unique() # 把列的数据类型转换为数字。如果有非数字值,则会出错。 pd.to_numeric(df['Column Name']) # 把列的数据类型转换为数字,如果非数字值,则会转换为NaN pd.to_numeric(df['Column Na

Spark DataFrame join后移除重复的列

在Spark,两个DataFrame做join操作后,会出现重复的列。有两种方法可以用来移除重复的列。方法一:join表达式使用字符串数组(用于join的列)df1.join(df2, Seq("id","name"),"left") 这里DataFrame df1和df2使用了id和name两列来做join,返回的结

Pandas对应SQL的in和not in实现

在Pandas提供了pd.isin(),使用它可以实现SQL的in和not in。not in 对应于:~a.isin(b) 示例:假如有以下dataframe数据,它包含了列data如下:>>> df   data 0   a 1   b 2 &nb

Python:查询列表给定元素的索引

单一索引列表的index()函数返回列表里第一次遇到给定元素的索引。>>> ["a", "b", "c"].index("b") 1 多个索引如果需要返回给定元素的所有索引,则要遍历列表:indexes = [index for i