【问题标题】:How to drop a row using idmax in pandas如何在熊猫中使用 idmax 删除一行
【发布时间】:2021-03-29 21:45:08
【问题描述】:

我有一个包含日期、类型、子类型、总计列的数据框。我将它与日期、类型和子类型分组并找到总数。然后我尝试循环数据帧以从分组数据帧中找到最大值和最小值并将其传递到字典中。然后它应该从数据框中删除最小和最大行。它应该再次找到最小值和最大值并将其存储到字典中。 我无法删除最小和最大行。有人可以帮我实现这一目标 附上代码。

Combo_Dict = {}

for index, value in df_grouped_data.iterrows():
    
      max_Var = df_grouped_data[[('total', 'count')]].idxmax()
      max_Var = list(max_Var)[0][2]
      min_Var = df_grouped_data[[('total', 'count')]].idxmin()
      min_Var = list(min_Var)[0][2]
      Combo_Dict[max_Var] = min_Var

【问题讨论】:

  • 请提供您的数据框的示例输入数据和预期输出。
  • @MayankPorwal 附上 2011-01 BEVERAGE ENG BREAKFAST TEA 4 True GRENADINE 11 True ICED LEMON OR STR CAMOMILE 2 False M & M SHAKE 2 False RED BULL 2+1 14 True RED 的输出BULL 3+2 3 False STRAWBERRY LITE SHAKE 1 False THE AFTER 8 SHAKE 11 True 我希望输出应该是 RED BULL 2+1 STRAWBERRY LITE SHAKE GRENADINE Iced LEMON OR STR CAMOMILE ENG BREAKFAST TEA M & M SHAKE

标签: python pandas dataframe


【解决方案1】:

目前尚不完全清楚您想要实现什么,但我想您希望对每个 groupby 进行总计数,并删除计数最多和最少的那个。

在不知道您的数据是什么样子的情况下,这就是我尝试解决问题的方法:

df['group_count'] = df.groupby(['date', 'type']['subtype'].transform('count')
filtered_df = (df
    .loc[
        (df.group_count > df.group_count.min())    # all but the minimum
        & (df.group_count < df.group_count.max())  # all but the maximum
    ]
    .drop(['group_count', axis=1)
)

我希望这会有所帮助,否则,请随时就您要解决的问题提供更多详细信息。

【讨论】:

  • 是的,我想计算每个组的总数,并将最大值和最小值存储在字典中,然后删除最大值和最小值。我想这样做,直到所有行都从数据框中删除
猜你喜欢
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2016-02-11
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多