【发布时间】:2021-01-25 11:31:02
【问题描述】:
我有一个如下所示的数据框:
Values Class
0 0.018342 2
1 -0.461340 2
2 -0.461340 2
3 1.787317 2
4 1.896320 2
5 0.987067 2
6 1.923396 2
7 1.923396 2
8 1.640110 2
9 1.952998 2
10 3.961000 2
11 1.954717 2
12 1.954717 2
13 1.436860 2
14 1.649298 2
15 0.824585 0
16 -2.304908 0
17 -2.304908 0
18 0.853281 0
19 0.785227 0
20 -7.345420 0
21 -8.031817 0
22 -8.031817 0
23 -8.413029 0
24 -8.664868 0
25 2.448812 0
26 2.612488 0
27 2.612488 0
28 4.334718 0
29 0.554953 0
我想重塑这个数据框,使其看起来像:
var1 var2 var3 class
0 0.018342 0.987067 3.961000 2
1 -0.461340 1.923396 1.954717 2
2 -0.461340 1.923396 1.954717 2
3 1.787317 1.640110 1.436860 2
4 1.896320 1.952998 1.649298 2
5 0.824585 -7.345420 2.448812 0
6 -2.304908 -8.031817 2.612488 0
7 -2.304908 -8.031817 2.612488 0
8 0.853281 -8.413029 4.334718 0
9 0.785227 -8.664868 0.554953 0
我的代码如下:
new_results = []
Len_Var = 3 #Number of variables
print(df['Values'].values)
print(int(len(df['Values'].values)))
print(int(len(df['Values'].values)/Len_Var))
var_results = pd.DataFrame(np.reshape(df['Values'].values,(int(len(df['Values'].values)/Len_Var),Len_Var), order="F"))
var_classes= pd.DataFrame(np.reshape(df['Class'].values,(int(len(df['Class'].values)/Len_Var),Len_Var)))
var_results['target'] = var_classes[0].astype(str).astype(float).astype(int)
var_results = var_results.reset_index(drop=True)
new_result = var_results.rename(columns={0: "var1", 1: "var2", 2: "var3"}, errors="raise")
new_results.append(new_result)
results = pd.concat(new_results)
results = results.reset_index()
在重塑中一定有什么我错过了,但我想不通。
【问题讨论】:
标签: python-3.x pandas dataframe numpy reshape