python - pandas:groupby 和聚合而不会丢失分组的列

标签 python pandas dataframe group-by

我有一个 pandas 数据框,如下所示。对于每个 ID,我可以有多个名称和子 ID。

Id      NAME   SUB_ID
276956  A      5933
276956  B      5934
276956  C      5935
287266  D      1589

我想压缩数据框,使每个 id 只有一行,每个 id 下的所有名称和 sub_id 在该行上显示为单个集合

Id      NAME           SUB_ID
276956  set(A,B,C)     set(5933,5934,5935)
287266  set(D)         set(1589) 

我尝试按 id 分组,然后聚合所有其他列

df.groupby('Id').agg(lambda x: set(x))

但是在这样做时生成的数据框没有 Id 列。当您执行 groupby 时,id 将作为元组的第一个值返回,但我想当您聚合时它会丢失。有没有办法获得我正在寻找的数据框。即在不丢失分组的列的情况下进行groupby聚合。

最佳答案

如果您不想将 groupby 作为索引,则有一个参数可以避免进一步重置:

df.groupby('Id', as_index=False).agg(lambda x: set(x))

关于python - pandas:groupby 和聚合而不会丢失分组的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441484/

相关文章:

python - 如何重新排列数据框中的行并获得与 pandas 中其他两列具有百分比差异的新列?

python - 逐个元素向下转换系列或数据框

python - 在 Python 中发送数据 Curl/Json

python - 线性拟合,包括 NumPy/SciPy 的所有错误

python - 在每个循环迭代中创建新的 pandas 数据框

R 使用字符串作为列名称将字符串拆分为列,并使用任何数字作为这些列中的值

java - rabbitmq 无法与 java 一起使用

python - google.api_core.exceptions.ServiceUnavailable : 503 The datastore operation timed out, 或使用流时数据暂时不可用

Pandas Multiindex - 从列表中选择

python - pandas data frame的每个元素的值如何存储在redis中