我是python的新手,需要对以下df进行一些操作。我基本上需要的是从这个开始:
id | name | start | >age4 | age5 | age 6 | |
---|---|---|---|---|---|---|
1 | x | >td style="text-align:center;">01:0001:02 | >td style="text-align:ccenter;">3_10<11_20><21_30>n/a | n/a | n/a | |
2 | y | 01:05 | >01:07>td style="text-align:centre">n/a1_2021_30 | 31_40 | 41_50 | n/a |
3 | z | 01:10 | >td style="text-align:centre!">01:12/a<1d>n/a31_40 | 41_50 | 不适用 |
如果我理解任务,这里有一个解决方案:
df = pd.DataFrame({
'id': [1, 2],
'name': ['x', 'y'],
'start': ['01:00', '01:05'],
'end': ['01:02', '01:07'],
'age1': ['3_10', 'n/a'],
'age2': ['11_20', '11_20'],
'age3': ['21_30', '21_30'],
'age4': ['n/a', '31_40'],
'age5': ['n/a', '41_50'],
'age6': ['n/a', 'n/a']
})
# for each age create a new record with the same id and name and start and end and age
df2 = pd.DataFrame()
for i in range(1, 7):
df2 = df2.append(df[['id', 'name', 'start', 'end', 'age' + str(i)]].rename(columns={'age' + str(i): 'age'}))
# drop the rows with n/a
df2 = df2[df2.age != 'n/a']
print(df2)
如果这不是你想要澄清的,我会为你找到解决方案。