繁体   English   中英

使用列名称和类型将numpy ndarray转换为pandas数据框

[英]Converting numpy ndarray into pandas dataframe with column names and types

编辑:如下@floydian的注释中所述,问题是调用a = np.array(a, dtype=d)创建了一个double数组,这引起了问题。

我知道这个问题已经被问过多次了,实际上我正在研究使用包含多个类型的numpy数组创建Pandas DataFrame的问题。 但是转换时我似乎仍然有问题。 我一定很简单,很想念。 我希望有人能这么友善并指出。 下面的示例代码:

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

我会这样定义数组:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM