将多行缩小为一行

时间:2019-07-31 05:07:02

标签: pandas dataframe

我想将数据框中的多行缩小为一行。 例如,如果我有一个这样的数据框,

Struct_Search

我的输出数据框应该是:

  name   year  project_name month  week worklogs
  Ahkam  2019  Proj1           1      1    10
  Ahkam  2019  proj2           1      1    14
  Ahkam  2019  proj3           1      2    6
  Ahkam  2019  proj4           1      2    14
  Naser  2019  Proj1           1      1    7
  Naser  2019  proj2           1      1    8
  Naser  2019  proj3           1      2    5
  Naser  2019  proj4           1      2    3

project_name列可以是任意大小。必须根据分组的列(名称,年,月,周)添加工作日志

先谢谢了。

1 个答案:

答案 0 :(得分:2)

使用DataFrameGroupBy.agg

df = (df.groupby(['name', 'year', 'month', 'week'], as_index=False)
        .agg({'project_name':'first', 'worklogs':'sum'}))

print(df)
    name  year  month  week project_name  worklogs
0  Ahkam  2019      1     1        Proj1        24
1  Ahkam  2019      1     2        proj3        20
2  Naser  2019      1     1        Proj1        15
3  Naser  2019      1     2        proj3         8