我有一个向量,它总是对象M
和K
的倍数。在下面的例子中,M=2
和K=3
的向量长度为6。我想找到的是使用M
和K
的值来分割我的列表的最佳方法,因此它会导致每个列中有M
列和K
行的pandas数据框。
我可以看到一种方法来循环列表和抓取和组织我需要的东西。然而,我认为有一种更有效的方法,希望有人能帮我指出来。
import pandas as pd
result = [1,2,3,4,5,6]
M = 2
K = 3
A = pd.DataFrame(result[0:3])
B = pd.DataFrame(result[3:6])
final = pd.concat([A.reset_index(drop = True), B], axis = 1)
在final
中获得相同值的一个有效解决方案是:
import pandas as pd
import numpy as np
result = [1, 2, 3, 4, 5, 6]
final = pd.DataFrame(np.array(result).reshape(M,K).T)
这个reshape
将一个扁平的numpy
数组转换为预期的维度,然后以转置顺序(.T
)读取它,首先沿着列降序,然后跨行降序)
你可以这样做:
import numpy as np
...
df = pd.DataFrame(np.array(result).reshape(K, M))
实际上,你需要:
pd.DataFrame(np.array(result).reshape(K, M, order='F'))