我有熊猫数据框(出勤记录)。里面有当地学校的出勤记录。在
每行有4列:1)缺席学生的姓名(姓名),2)学生的地址(地址),3)缺勤的第一天(开始),和4)最后一天的缺勤(结束)。在
例如,一行可以是:
Bobby 101 1st Street 9/1/2014 9/3/2014
这意味着鲍比每天9月1日至9月3日(包括9月1日)缺席。在
我想按如下方式展开表格:
^{pr2}$到目前为止,我有一些代码(如下)可以完成这项工作,但是对于大型表来说,它的速度非常慢,因为它基本上是逐行遍历表。有什么办法让事情更快些吗?在
import pandas as pd
def full_data(dataframe):
allframe = pd.DataFrame()
for i in dataframe.index:
newframe = pd.DataFrame()
newframe['dates'] = pd.date_range(dataframe.iloc[i].start, dataframe.iloc[i].end, freq = 'D')
newframe['name'] = dataframe.iloc[i]['name']
newframe['address'] = dataframe.iloc[i]['address']
allframe = allframe.append(newframe)
if i%1000 == 0:
print i
return allframe
attendance_records = full_data(attendance_records)
对日期进行日期运算,不需要填写缺失的日期。然后按名称分组并计算天数。在
pandas函数
append
对于较大的数据帧来说可能会很慢。相反,我建议将newframes
存储在python列表中,而不是使用只附加所有帧一次的concat函数。在注意,这还没有经过测试。在
相关问题 更多 >
编程相关推荐