【问题标题】:drop values in group by based on group criteria pandas根据组标准 pandas 在组中删除值
【发布时间】:2019-02-24 21:32:09
【问题描述】:

我有以下数据生成的数据框:

df2 = df.groupby(['City','Address','date_time'])['house_price'].mean().pct_change()

City              Address                                      Date          Pct Ch
Washington, D.C.  111 S Street Appletown                       2018-08-03    0.298077
                                                               2018-08-11    0.000000
                                                               2018-08-17    0.000000
                                                               2018-09-07    0.000000
                                                               2018-09-17    0.000000
                                                               2018-09-20    0.000000
                  222 S Street Appletown                       2018-08-07    0.125926
                                                               2018-08-11    0.000000
                                                               2018-08-17    0.000000
                                                               2018-09-07    0.000000
                                                               2018-09-17    0.000000
                                                               2018-09-20    0.000000

我想删除每个组中的最短日期(2018-08-03 用于 111 S Street Appletown;2018-08-07 用于 222 S Street)。

我试过了

df2 = df.groupby(['City','Address','date_time'])['house_price'].mean().pct_change().filter(lambda x: x['date_time']> x['date_time'].min())

但这会引发错误。有什么好办法吗?

【问题讨论】:

    标签: python pandas lambda pandas-groupby


    【解决方案1】:

    你可以试试(假设日期已排序)

    df.groupby(level=[0,1]).apply(lambda x : x.iloc[1:,:])
    

    【讨论】:

    • df3 = df2.groupby(level=[0,1,2]).apply(lambda x : x.iloc[1:,:]) 产生 IndexingError: Too many indexers, 而 df. groupby(['City','Address','date_time'])['house_price'].mean().pct_change().apply(lambda x : x.iloc[1:,:]) 产生'float'对象没有属性“iloc”
    • @user2723494 使用此方法获取 df2 后
    • df2 = df.groupby(['City','Address','date_time'])['house_price'].mean().pct_change() df3 = pd.DataFrame(df2)。 groupby(level=[0,1,2]).apply(lambda x : x.iloc[1:,:]) 产生 ValueError:重复的级别名称:“City”,分配给级别 3,已用于级别 0 .
    • @user2723494 df2.reset_index().groupby(df2.index.names[:-1]).apply(lambda x : x.iloc[1:,:])
    猜你喜欢
    • 2020-03-09
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2017-07-07
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多