Python使用不同大小的单元格

Python使用不同大小的单元格,python,pandas,scheduled-tasks,timetable,Python,Pandas,Scheduled Tasks,Timetable,我目前正在从事一个小项目(Python 3.6.2),该项目基于我从学院网站上抓取的输入自动创建时间表。对于创建时间表和存储约会(以及以后重新组织它们,以找到“更好的”时间表),我目前使用的是Pandas DataFrame结构,我并不完全满意。我希望预约占用多个单元格 08:55:00 09:40:00 09:50:00 Mod, Spez, Sem 11:30:00 11:40:00 13:20:00 13:30:00 Systemnahe

我目前正在从事一个小项目(Python 3.6.2),该项目基于我从学院网站上抓取的输入自动创建时间表。对于创建时间表和存储约会(以及以后重新组织它们,以找到“更好的”时间表),我目前使用的是Pandas DataFrame结构,我并不完全满意。我希望预约占用多个单元格

08:55:00    
09:40:00    
09:50:00    Mod, Spez, Sem
11:30:00    
11:40:00    
13:20:00    
13:30:00    Systemnahe und parallele Programmierung - Ü 01
15:10:00    
15:20:00    
16:00:00    
16:05:00    
16:15:00    Modellierung, Spezifikation und Semantik - Ü 02
17:00:00    
17:55:00    
例如,第一次约会发生在09:50到11:40之间,因此应该占用这些时间段。一个快速的解决方案是,在它占用的每个时隙中都写上这个约会的名字,但这感觉和看起来都不是很干净。我想在完成后将其导出到Excel。
因此,我的问题是,我是如何做到这一点的,还是一直使用数据帧是错误的?

您需要首先转发填充数据,然后分组,然后指定,最后总结时间列:

from io import StringIO
import pandas

raw = StringIO("""\
08:55:00;
09:40:00;
09:50:00;Mod, Spez, Sem
11:30:00;
11:40:00;
13:20:00;
13:30:00;Systemnahe und parallele Programmierung - Ü 01
15:10:00;
15:20:00;
16:00:00;
16:05:00;
16:15:00;Modellierung, Spezifikation und Semantik - Ü 02
17:00:00;
17:55:00;
""")

df = (
    pandas.read_table(raw, sep=';', header=None, names=['time', 'appt'], parse_dates=['time'])
        .fillna(method='ffill')
        .assign(offset=lambda df: df['appt'].shift(-1))
        .query('appt == offset')
        .groupby('appt')['time']
        .describe()[['first', 'last']]
        .rename(columns={'first': 'begin', 'last': 'end'})
        .sort_values(by=['begin'])
        .reset_index()
)
这给了我:

                                              appt                begin                  end
0                                   Mod, Spez, Sem  2017-11-21 09:50:00  2017-11-21 11:40:00
1   Systemnahe und parallele Programmierung - Ü 01  2017-11-21 13:30:00  2017-11-21 16:00:00
2  Modellierung, Spezifikation und Semantik - Ü 02  2017-11-21 16:15:00  2017-11-21 17:00:00

你的问题很不清楚。你展示了一些你不满意的东西,但是没有给出很多你满意的指导,也没有给出很多关于申请的信息。此外,您似乎正在使用系列而不是数据帧。如果在每个适用的行中重复操作,在将其导出到Excel后,您可能可以创建一个宏来合并单元格,但这更像是一个Excel问题,而不是假设每个时间段都将被填充,每一个空白时间段都应该由最近一个被填满的时间段来填补。这似乎是一个安全的假设:例如,第一次约会发生在09:50到11:40之间,因此应该占用这些时间段。我认为数据帧无法做到这一点。据我所知,每一行本身都需要有意义。谢谢你,这对我帮助很大。似乎我在想我的问题的错误解决方案,而不是像你那样合并插槽安排插槽似乎是更好的解决方案。