是否可以在lambda函数内部应用groupby?

问题描述 投票:0回答:1

我想在条件列名“ Group”等于“ Group 1”值的情况下对三列(输入文件名,页码,顶部)应用groupby方法,并保持其余值不变。请参考图片以便更好地理解。

pleasse find the dataset image here

下面是我尝试过的代码

df是我的整个数据集

df[df['Group'].apply(lambda x:x=='Group 1')].groupby(['Input File Name','Page Number','Top'], as_index=False).agg(lambda x: list(x))

如果使用上面的代码,则适用于组1的值,而忽略其余的值。所以我尝试了另一种方式:

df.apply(lambda x: x.groupby(['Input File Name','Page Number','Top'], as_index=False).agg(lambda x: list(x)) if x['Group']=='Group 1' else x)

因此,我得到KeyError:('Group','发生在索引输入文件名']

此方法可行吗?

python group-by
1个回答
0
投票

如何执行两个步骤:

  1. == Group1时过滤
  2. 与其他人合影

类似:

df_group1 = df[df['Group'] == 'Group1'].groupby(['Input File Name','Page Number','Top'], as_index=False).agg(lambda x: list(x))
df_rest = df[df['Group'] != 'Group1']

但是使用pd.concat合并这些将需要更多信息。例如:新的agg将是一个新列表? None其他组发生了什么?

没有确切的期望输出,我无法帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.