如何解决使用 Numpy 转换数据帧会给出错误的值
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()
在重塑中一定有我遗漏的东西,但我无法弄清楚。
解决方法
试试这个,看看它是否适合你:
array = df.to_numpy()
left,right = array[:,0],array[:,-1]
data = pd.DataFrame(
np.vstack(np.split(np.reshape(left,(-1,6),order="F"),2,1)),columns=["var1","var2","var3"],)
right = np.vstack(np.split(np.reshape(right,1))[:,0]
data.assign(target=right)
var1 var2 var3 target
0 0.018342 0.987067 3.961000 2.0
1 -0.461340 1.923396 1.954717 2.0
2 -0.461340 1.923396 1.954717 2.0
3 1.787317 1.640110 1.436860 2.0
4 1.896320 1.952998 1.649298 2.0
5 0.824585 -7.345420 2.448812 0.0
6 -2.304908 -8.031817 2.612488 0.0
7 -2.304908 -8.031817 2.612488 0.0
8 0.853281 -8.413029 4.334718 0.0
9 0.785227 -8.664868 0.554953 0.0
如果你稍微玩弄一下,你可以获得一个更清晰的实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。