如何重整列(0 => 1、2 => 3)作为记录存储?
即列Serializer.GetProto<T>()
和metric_name
以及多行(观察)?
metric_value
答案 0 :(得分:1)
如果只有4列,则可以展平值并通过构造函数创建DataFrame:
a = df[[0, 2]].values.ravel()
b = df[[1, 3]].values.ravel()
df = pd.DataFrame({'A':a, 'B':b})
print (df)
A B
0 Model: Logit
1 Pseudo R-squared: inf
2 Dependent Variable: sick_percentage
3 AIC: 6.0798
4 Date: 2019-08-14 13:32
5 BIC: 10.0764
6 No. Observations: 28
7 Log-Likelihood: -0.039902
8 Df Model: 2
9 LL-Null: 0.0000
10 Df Residuals: 25
11 LLR p-value: 1.0000
12 Converged: 0.0000
13 Scale: 1.0000
14 No. Iterations: 35.0000
15
一般解决方案-在具有模和整数除法的列中创建MultiIndex
,并通过DataFrame.stack
进行整形:
df.columns = [df.columns % 2, df.columns // 2]
df = df.stack().reset_index(drop=True)
print (df)
0 1
0 Model: Logit
1 Pseudo R-squared: inf
2 Dependent Variable: sick_percentage
3 AIC: 6.0798
4 Date: 2019-08-14 13:32
5 BIC: 10.0764
6 No. Observations: 28
7 Log-Likelihood: -0.039902
8 Df Model: 2
9 LL-Null: 0.0000
10 Df Residuals: 25
11 LLR p-value: 1.0000
12 Converged: 0.0000
13 Scale: 1.0000
14 No. Iterations: 35.0000
15
答案 1 :(得分:0)
如果您正在寻找更快的解决方案,也可以在此处使用np.concatenate
。
df=pd.DataFrame(np.concatenate( (df.iloc[:,[0,1]].values, df.iloc[:,[2,3]].values), axis=0 ),columns=['Metric Name','Metric Value'])
如果要使用熊猫功能,可以使用
1)pandas.DataFrame.merge
df= df.iloc[:,[0,1]].rename(columns={0:'Metric Name',1:'Metric Value'}).merge(df.iloc[:,[2,3]].rename(columns={2:'Metric Name',3:'Metric Value'}),how='outer')
2)pandas.concat
df=pd.concat((df.iloc[:,[0,1]].rename(columns={0:'Metric Name',1:'Metric Value'}),df.iloc[:,[2,3]].rename(columns={2:'Metric Name',3:'Metric Value'})), ignore_index=True)