【问题标题】:pandas groupby does not count properly. why?pandas groupby 计数不正确。为什么?
【发布时间】:2018-08-31 17:43:15
【问题描述】:

当我执行以下操作时

print(dataframe.groupby(['Latitude','Longitude','Year','Day'])['Yield'].unique())

我得到了奇怪的结果(只显示了一部分)

Latitude Longitude Year Day
39.338764 -85.241940 2009 141 [69.9123985]
* 2010 145 [60.184353, 59.7501973333, 52.523612]
* 2011 157 [62.324484, 44.512905]
* 2012 139 [57.240542625]
* 2013 141 [73.2846975, 67.992009]
* 2012 139 [55.4780421429]

对于 Year = 2010 和 Day = 145,我将三个值放在一起
而对于 Year = 2012 和 Day = 139,我得到两个分离的值,当我应用函数 mean() 时无法平均。

为什么?

附:它是 0.20.1 pandas 版本,我在数据框中没有任何其他变量

【问题讨论】:

    标签: python pandas count unique pandas-groupby


    【解决方案1】:

    我相信您需要uniquenumpy.meanlambda 函数,因为unique 返回numpy 数组:

    print(dataframe.groupby(['Latitude','Longitude','Year','Day'])['Yield'].apply(lambda x: np.mean(x.unique())))
    

    示例

    df = pd.DataFrame({'Latitude':list('aaabab'),
                       'Yield':[1,1,4,5,5,4],
                       'Longitude':list('aaabbb')})
    
    print (df)
      Latitude Longitude  Yield
    0        a         a      1
    1        a         a      1
    2        a         a      4
    3        b         b      5
    4        a         b      5
    5        b         b      4
    
    print(df.groupby(['Latitude','Longitude'])['Yield'].unique())
    Latitude  Longitude
    a         a            [1, 4]
              b               [5]
    b         b            [5, 4]
    Name: Yield, dtype: object
    
    print(df.groupby(['Latitude','Longitude'])['Yield'].apply(lambda x: np.mean(x.unique())))
    Latitude  Longitude
    a         a            2.5
              b            5.0
    b         b            4.5
    Name: Yield, dtype: float64
    

    替代解决方案:

    print (df.drop_duplicates(['Latitude','Longitude', 'Yield']).groupby(['Latitude','Longitude'])['Yield'].mean())
    Latitude  Longitude
    a         a            2.5
              b            5.0
    b         b            4.5
    Name: Yield, dtype: float64
    

    【讨论】:

    • 不幸的是,这给了我完全相同的结果
    • 我尝试了升级版本,但仍然没有。然而我的数据集是从较大的数据集中提取的(还有一些其他变量),熊猫是否有可能与数据保持一致?
    • 是的,是float64
    • 好吧,我不能共享数据。无论如何感谢您的帮助。
    • 没有解决问题。我确定我的数据集中没有任何重复项
    猜你喜欢
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多