在pandas数据帧中查找具有相同值的不同ID

时间:2017-04-03 14:24:56

标签: pandas

我在pandas dataframe中有以下数据。

    Id1  StartTime               start_lat   start_long StartGeohash
0   113 2016-11-01 10:50:28.063 -33.139507  -100.226715 9vbsx2
1   113 2016-11-02 10:49:24.063 -33.139507  -100.226715 9vbsx2
2   115 2016-11-03 10:55:20.063 -36.197660  -101.186050 9y2jcm
3   115 2016-11-04 10:53:19.063 -36.197660  -101.186050 9y2jcm
4   116 2016-11-01 12:59:21.127 -33.139507  -100.226715 9vbsx2
5   114 2016-11-02 12:41:46.063 -36.197660  -101.186050 9y2jcm
6   120 2016-11-03 12:48:04.063 -36.197660  -101.186050 9y2jcm
7   117 2016-11-04 12:51:51.063 -36.197660  -101.186050 9y2jck
8   118 2016-11-05 18:07:01.063 -36.197660  -101.186050 9y2jck

我试图找出有多少不同的Id1具有相同的StartGeohash

    StartGeohash       Count
    9vbsx2             2
    9y2jcm             3
    9y2jck             2

我尝试了以下内容,但它为每个Id1

产生不同的StartGeohashes
  group = df1.groupby('Id1')['StartGeohash'].unique()

任何建议都会有所帮助。谢谢!!

3 个答案:

答案 0 :(得分:3)

怎么样:

df1.groupby('StartGeohash').apply(lambda x: len(x.Id1.drop_duplicates()))

答案 1 :(得分:3)

使用nunique

 df.groupby(['StartGeohash'])['Id1'].nunique()

输出

StartGeohash
9vbsx2    2
9y2jck    2
9y2jcm    3

答案 2 :(得分:0)

关注'StartGeohash'列,我使用duplicated方法对列进行切片,并使用nunique计算唯一值

df.StartGeohash[df.StartGeohash.duplicated()].nunique()

3