将numpy-ndarray转换为具有列名和类型的pandas dataframe

2024-05-18 08:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:正如下面@floydian的评论中所解释的,问题是调用a = np.array(a, dtype=d)会创建一个导致问题的双数组。在

我知道这个问题已经被问了很多次了,事实上我现在正在寻找Creating a Pandas DataFrame with a numpy array containing multiple types的答案。但我在转换的时候似乎还是有问题。一定是我错过了一些很简单的事情。我希望有人能这么和蔼可亲地指出这一点。示例代码如下:

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

Tags: importnumpy编辑dataframedfindexasnp
2条回答

我可以这样定义数组:

a = np.array([(1, 2), (3, 4)], dtype=[('x','float'), ('y', 'int')])
pd.DataFrame(a)

得到你想要的。在

一种在事后分开的选择可能是

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

相关问题 更多 >