我正在处理 Pandas 数据框中的时间表。第一列是日期,其他列是类次:类次 1 类次 2、类次 3 等。类次下是员工:e1、e2、e3 等。
我当前的数据如下所示:
df
calander_date s1 s2 s3 s4 s5 s6 s7 s8 s9
0 1/1/2020 e1 e3 e6 e2 Nan e7 e4 Nan e9
1 1/2/2020 e2 e8 e6 e4 Nan e5 e1 Nan e7
2 1/3/2020 e3 e10 e4 e2 Nan e7 e1 Nan e9
3 1/4/2020 Nan e10 e4 e2 e5 e7 e1 Nan e9
我的目标是将日期保留为第一列,并将员工作为字段名称,并让轮类在员工下工作,如下所示:
df
calander_date e1 e2 e3 e4 e5 e6 e7 e8 e9
0 1/1/2020 s1 s4 s2 s7 Nan s3 s6 Nan s9
1 1/2/2020 s7 s1 Nan s4 s6 s3 s9 s2 Nan
2 1/3/2020 s7 s4 s1 s3 Nan Nan s6 Nan s9
3 1/4/2020 s7 s4 Nan s3 s5 Nan s6 Nan s9
寻找一种巧妙的方法来实现这一点。
最佳答案
这是melt/stack
的组合和 unstack/pivot
:
(df.set_index('calander_date').replace('Nan', np.nan)
.stack().reset_index(name='employee')
.pivot('calander_date', 'employee','level_1')
)
输出:
employee e1 e10 e2 e3 e4 e5 e6 e7 e8 e9
calander_date
1/1/2020 s1 NaN s4 s2 s7 NaN s3 s6 NaN s9
1/2/2020 s7 NaN s1 NaN s4 s6 s3 s9 s2 NaN
1/3/2020 s7 s2 s4 s1 s3 NaN NaN s6 NaN s9
1/4/2020 s7 s2 s4 NaN s3 s5 NaN s6 NaN s9
关于Python - 保留日期列并使用字段名称翻转单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61215310/