在python中将宽格式的数据帧转换为长格式
我试图创建一个宽格式的数据帧,然后将其转换成这里提到的长格式 然后,当我使用以下代码使用wide_to_long函数时,我没有得到所需的输出:在python中将宽格式的数据帧转换为长格式,python,pandas,logistic-regression,Python,Pandas,Logistic Regression,我试图创建一个宽格式的数据帧,然后将其转换成这里提到的长格式 然后,当我使用以下代码使用wide_to_long函数时,我没有得到所需的输出: l = pd.wide_to_long(df, stubnames='time', i=['id'], j='alternate',sep=".") 谁能帮我一下,我哪里做错了?在之后的列名称中,每个类别都需要整数,这是一个问题: print(df) Mode id time.air time.car 0 car 1 2.8
l = pd.wide_to_long(df, stubnames='time', i=['id'], j='alternate',sep=".")
谁能帮我一下,我哪里做错了?在
之后的列名称中,每个类别都需要整数,这是一个问题:
print(df)
Mode id time.air time.car
0 car 1 2.8 3.4
1 car 2 2.9 3.8
2 car 3 2.2 2.9
3 air 4 2.0 3.2
4 air 5 1.8 2.8
5 car 6 1.9 2.4
6 car 7 2.2 3.3
7 air 8 2.3 3.4
8 air 9 2.1 2.9
解决方案将类别替换为整数,应用解决方案并最后映射回:
c = df.columns[df.columns.str.startswith('time')]
cats = c.str.split('.', expand=True).levels[1]
mapping1 = {str(k):v for k, v in enumerate(cats)}
mapping2 = {v:k for k, v in mapping1.items()}
df.columns = df.columns.to_series().replace(mapping2, regex=True)
print (df)
Mode id time.0 time.1
0 car 1 2.8 3.4
1 car 2 2.9 3.8
2 car 3 2.2 2.9
3 air 4 2.0 3.2
4 air 5 1.8 2.8
5 car 6 1.9 2.4
6 car 7 2.2 3.3
7 air 8 2.3 3.4
8 air 9 2.1 2.9
在
之后的列名称中,每个类别都需要整数,这是一个问题:
print(df)
Mode id time.air time.car
0 car 1 2.8 3.4
1 car 2 2.9 3.8
2 car 3 2.2 2.9
3 air 4 2.0 3.2
4 air 5 1.8 2.8
5 car 6 1.9 2.4
6 car 7 2.2 3.3
7 air 8 2.3 3.4
8 air 9 2.1 2.9
解决方案将类别替换为整数,应用解决方案并最后映射回:
c = df.columns[df.columns.str.startswith('time')]
cats = c.str.split('.', expand=True).levels[1]
mapping1 = {str(k):v for k, v in enumerate(cats)}
mapping2 = {v:k for k, v in mapping1.items()}
df.columns = df.columns.to_series().replace(mapping2, regex=True)
print (df)
Mode id time.0 time.1
0 car 1 2.8 3.4
1 car 2 2.9 3.8
2 car 3 2.2 2.9
3 air 4 2.0 3.2
4 air 5 1.8 2.8
5 car 6 1.9 2.4
6 car 7 2.2 3.3
7 air 8 2.3 3.4
8 air 9 2.1 2.9
通过使用后缀='\w+'更改格式
l = pd.wide_to_long(df, stubnames='time', i=['id'], j='alternate',sep=".", suffix='\w+')
通过使用后缀='\w+'更改格式
l = pd.wide_to_long(df, stubnames='time', i=['id'], j='alternate',sep=".", suffix='\w+')
显示所需输出显示所需输出