Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将宽格式的数据帧转换为长格式_Python_Pandas_Logistic Regression - Fatal编程技术网

在python中将宽格式的数据帧转换为长格式

在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

我试图创建一个宽格式的数据帧,然后将其转换成这里提到的长格式

然后,当我使用以下代码使用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       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+')

显示所需输出显示所需输出