我正在尝试将相似的列组合成行

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

我有一个非常混乱的数据框。 df 看起来像这样:

student_id  date         measure      level            measure.1       level.1....
804322      9/2/2022     some string   more string     some string     more string 
3424234     9/3/2023     some string   more string     some string     more string
2132121     4/5/2022     some string   more string     some string     more string

这继续到 measure 和 level 2 和 3。我想做的是将 measure.1、measure.2 和 measure.3 放入一列,并为每一行重复日期和学生 ID 的值创建。另外对 level、level.1 等做同样的事情。任何帮助将不胜感激!

python pandas data-cleaning
1个回答
0
投票

IIUC,你可以使用:

out = (df.set_index(["student_id", "date"])
           .set_axis(df.columns[2:].str.split(".", expand=True), axis=1)
           .stack(1).droplevel(-1).reset_index()
      )

输出:

print(out)

   student_id      date        level      measure
0      804322  9/2/2022  more string  some string
1      804322  9/2/2022  more string  some string
2     3424234  9/3/2023  more string  some string
3     3424234  9/3/2023  more string  some string
4     2132121  4/5/2022  more string  some string
5     2132121  4/5/2022  more string  some string
© www.soinside.com 2019 - 2024. All rights reserved.