【发布时间】:2015-07-02 04:36:25
【问题描述】:
如果这个问题看起来有点幼稚,我提前道歉。我还在学习 pandas 和 numpy 之间的相互作用。
我有一个 pandas DataFrame,我正在尝试将其转换为数组以使用 scikit-learn 进行分析。我试过 df.values 和 df.to_records() 来转换它,但由于某种原因,它在转换过程中改变了形状。
这是 Pandas 中 DataFrame (df) 的前几行。
Index Code1 Code2 Code3
0 99285 5921 5921
1 99284 NaN 5921
2 99284 NaN 4660
3 99285 42789 42789
4 99284 92321 92321
5 99283 NaN 92321
...
[94 rows x 3 columns]
但是,如果我调用df.values,我会得到以下结果,据我所知,它不是数组,因为数组是元组列表。
[['99285' '5921' '5921']
['99284' nan '5921']
['99284' nan '4660']
['99285' '42789' '42789']
['99284' '92321' '92321']
['99283' nan '92321']
...
如果我调用df.to_records(),我会得到以下结果,它是一个数组,但形状不正确,如下所示。
[(0, '99285', '5921', '5921') (1, '99284', nan, '5921')
(2, '99284', nan, '4660') (3, '99285', '42789', '42789')
(4, '99284', '92321', '92321') (5, '99283', nan, '92321')
...
>>>df.to_records().shape
(94,)
有人可以帮助我了解我需要做什么才能获得形状为 (94,3) 的数组吗?
重要说明:列都是字符串(并且需要保留为字符串),而不是整数,如果有帮助的话。
【问题讨论】:
-
不是
df.values.shape == (94, 3)? -
df.values确实返回了一个 np 数组,您从哪里得知数组应该是元组列表? -
type(df.values) 表示它是一个numpy.ndarray
-
@Alexander bumpy 绝对是错误的?你的意思是 numpy ;-)
-
错字,但可能会出现颠簸...
标签: python arrays numpy pandas dataframe