编辑:正如下面在@ floydian的评论中所解释的那样,问题是调用a = np.array(a, dtype=d)
会创建一个导致问题的双数组。
我知道这已经被多次询问了,事实上我现在正在看REX-Ray storage orchestrator回答。但转换时我似乎仍有问题。它一定是我想念的非常简单的东西。我希望有人能够如此善良并指出它。示例代码如下:
import numpy as np
import pandas as pd
a = np.array([[1, 2], [3, 4]])
d = [('x','float'), ('y','int')]
a = np.array(a, dtype=d)
# Try 1
df= pd.DataFrame(a)
# Result - ValueError: If using all scalar values, you must pass an index
# Try 2
i = [1,2]
df= pd.DataFrame(a, index=i)
# Result - Exception: Data must be 1-dimensional
答案 0 :(得分:2)
我会像这样定义数组:
a = np.array([(1, 2), (3, 4)], dtype=[('x','float'), ('y', 'int')])
pd.DataFrame(a)
获得你想要的东西。
答案 1 :(得分:1)
在事实之后将其分开的一个选择可能是例如。
pd.DataFrame(a.astype("float32").T, columns=a.dtype.names).astype({k: v[0] for k, v in a.dtype.fields.items()})
Out[296]:
x y
0 1.0 3
1 2.0 4