我需要一些关于使用pandas从2列重新整形数据的帮助。
我有这个csv文件(test.csv)
Axe Break Chaplin
1 52.1 ty
2 32.2 ty
3 44.6 ty
3 99.1 ty
5 122.3 ty
3 43.2 ty
7 79.4 ty
8 45.5 ty
9 56.3 ty
0 15.4 ty
1 35.7 ty
2 23.7 ty
3 66.7 ty
4 33.8 ty
1 12.9 ty
7 34.8 ty
1 21.6 ty
3 43.7 ty
6 44.2 ty
9 55.8 ty
4 22.4 ty
3 55.6 ty
2 11.4 ty
5 54.6 ty
6 19.7 ty
7 23.5 ty
1 12.8 ty
6 34.6 ty
8 69.6 ty
9 55.8 ty
期望的结果是这样的
[[ 52.1 32.2 44.6 99.1 122.3]
[ 43.2 79.4 45.5 56.3 15.4]]
[[ 35.7 23.7 66.7 33.8 12.9]
[ 34.8 21.6 43.7 44.2 55.8]]
[[ 22.4 55.6 11.4 54.6 19.7]
[ 23.5 12.8 34.6 69.6 55.8]]
ty
我已经尝试过,下面是示例脚本
import pandas as pd
import numpy as np
df = pd.read_csv("test2.csv")
def arrange1():
start = 0
for i in range(0, len(df.index)):
if (i + 1)%10 == 0:
result = df['Break'].iloc[start:i+1].reshape(2,5)
start = i + 1
print result
print "ty"
arrange1()
虽然这个脚本确实提供了我想要的结果,但我觉得还有另一种方法可以使用Pandas来实现。
我希望我不必做
print "ty"
感谢您的帮助。
[UPDATE]
我很抱歉没有澄清我想要的东西。我希望得到的结果就像我在最后打印的“ty”所示,但我不想写
print "ty"
脚本中的。换句话说,
print result
将打印此输出
[[ 52.1 32.2 44.6 99.1 122.3]
[ 43.2 79.4 45.5 56.3 15.4]]
[[ 35.7 23.7 66.7 33.8 12.9]
[ 34.8 21.6 43.7 44.2 55.8]]
[[ 22.4 55.6 11.4 54.6 19.7]
[ 23.5 12.8 34.6 69.6 55.8]]
ty
答案 0 :(得分:0)
使用此:
df.Break.values.reshape(3, 2, -1)
array([[[ 52.1, 32.2, 44.6, 99.1, 122.3],
[ 43.2, 79.4, 45.5, 56.3, 15.4]],
[[ 35.7, 23.7, 66.7, 33.8, 12.9],
[ 34.8, 21.6, 43.7, 44.2, 55.8]],
[[ 22.4, 55.6, 11.4, 54.6, 19.7],
[ 23.5, 12.8, 34.6, 69.6, 55.8]]])
或者如果您需要清单
df.Break.values.reshape(3, 2, -1).tolist()
[[[52.1, 32.2, 44.6, 99.1, 122.3], [43.2, 79.4, 45.5, 56.3, 15.4]],
[[35.7, 23.7, 66.7, 33.8, 12.9], [34.8, 21.6, 43.7, 44.2, 55.8]],
[[22.4, 55.6, 11.4, 54.6, 19.7], [23.5, 12.8, 34.6, 69.6, 55.8]]]