Python - 保留日期列并使用字段名称翻转单元格
Posted
技术标签:
【中文标题】Python - 保留日期列并使用字段名称翻转单元格【英文标题】:Python - Keep date column and flip cells with field names 【发布时间】:2020-04-14 19:06:50 【问题描述】:我正在处理熊猫数据框中的时间表。第一列是日期,其他列是班次:班次 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
寻找一个聪明的方法来完成这个。
【问题讨论】:
【参考方案1】:这是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 - 保留日期列并使用字段名称翻转单元格的主要内容,如果未能解决你的问题,请参考以下文章