id Code Week1 Week2 week3
sunday nan nan nan nan
id Code Week1 Week2 week3
1 100 y y n
2 200 n y n
3 300 n n y
Monday nan nan nan nan
id Code Week1 Week2 week3
1 500 n y y
2 600 y y y
Tuesday nan nan nan nan
id Code Week1 Week2 week3
1 800 n y y
2 900 y n y
我想以这种格式带来它:
Code Day Week
100 Sunday 1
600 Monday 1
900 Tuesday 1
100 Sunday 2
200 Sunday 2
500 Monday 2
600 Monday 2
800 Tuesday 2
300 Sunday 3
500 Monday 3
600 Monday 3
800 Tuesday 3
900 Tuesday 3
在熊猫中有没有办法做到这一点?
解决方法:
您可以使用:
df.index = df['id'].where(df['Code'].isnull()).ffill()
df = df[(df['Code'] != 'Code') & (df['id'] != df.index)]
df = df.rename_axis('Day').rename_axis('Week', 1)
df = df.set_index(['id','Code'], append=True)
.replace({'n':np.nan})
.stack().reset_index(name='val')
df['Week'] = df['Week'].str.extract('(\d+)', expand=False).astype(int)
cols = ['Code','Day','Week']
df = df.drop(['val','id'], axis=1)[cols].sort_values(['Week','Code']).reset_index(drop=True)
print (df)
Code Day Week
0 100 sunday 1
1 600 Monday 1
2 900 Tuesday 1
3 100 sunday 2
4 200 sunday 2
5 500 Monday 2
6 600 Monday 2
7 800 Tuesday 2
8 300 sunday 3
9 500 Monday 3
10 600 Monday 3
11 800 Tuesday 3
12 900 Tuesday 3
df.index = df['id'].where(df['Code'].isnull()).ffill()
df = df[(df['Code'] != 'Code') & (df['id'] != df.index)]
df = df.rename_axis('Day').rename_axis('Week', 1)
df = df.set_index(['id','Code'], append=True).stack().reset_index(name='val')
df['Week'] = df['Week'].str.extract('(\d+)', expand=False).astype(int)
print (df)
Day id Code Week val
0 sunday 1 100 1 y
1 sunday 1 100 2 y
2 sunday 1 100 3 n
3 sunday 2 200 1 n
4 sunday 2 200 2 y
5 sunday 2 200 3 n
6 sunday 3 300 1 n
7 sunday 3 300 2 n
8 sunday 3 300 3 y
9 Monday 1 500 1 n
10 Monday 1 500 2 y
11 Monday 1 500 3 y
12 Monday 2 600 1 y
13 Monday 2 600 2 y
14 Monday 2 600 3 y
15 Tuesday 1 800 1 n
16 Tuesday 1 800 2 y
17 Tuesday 1 800 3 y
18 Tuesday 2 900 1 y
19 Tuesday 2 900 2 n
20 Tuesday 2 900 3 y
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。