我的数据看起来像:
Name EID Schedule
A 001 Mo-We 6a-6a
B 002 Mo-We 6a-1a
C 003 M&TUE&W&THU 6A-1A
我希望数据最终看起来像
Name EID DOW StartHour EndHour
A 001 Monday 6 6
A 001 Tuesday 6 6
A 001 Wednesday 6 6
B 002 Monday 6 1
B 002 Tuesday 6 1
B 002 Wednesday 6 1
C 003 Monday 6 1
C 003 Tuesday 6 1
C 003 Wednesday 6 1
C 003 Thursday 6 1
我对大熊猫很新,并且有轻微的蟒蛇经验,并且有点坚持如何继续这样做。
答案 0 :(得分:0)
我为每个Name创建一个Person类,并将原始数据输入其中。您必须编写执行操作的函数:“Mo-We” - > [“星期一”,“星期二”,“星期三”],“M& TUE” - > [“星期一”,“星期二”]和“6a-6a” - > (6,6)。
我还没有写过那些解析函数,但是如果你也坚持下去,我可以帮忙解决这个问题。这是让你入门的结构:
class Person:
def __init__(self, name, eid, raw_days, raw_timings):
self.name = name
self.eid = int(eid)
self.days = parse_days(raw_days) # ["Monday", "Tuesday", "Wednesday"]
self.start_hour, self.end_hour = parse_timings(raw_timings) # (int, int)
def to_dicts(self):
dicts = []
for day in self.days:
dicts.append({"Name": self.name, "EID": self.eid, "DOW": day, "StartHour": self.start_hour, "EndHour": self.end_hour})
return dicts
def parse_days(raw_days):
return []
def parse_timings(raw_timings):
return None, None
解析所有输入数据并获得Person对象列表后,可以在每个人上调用person.to_dicts()并将其附加到DataFrame:
for person in persons:
df.append(person.to_dicts())