将pandas索引转换为numpy数组。

Converting pandas index to numpy array. Python

本问题已经有最佳答案,请猛点这里访问。

我想将数据帧的索引列转换为数组,但我不确定如何处理它。我已经将第二列转换为数组,但由于某种原因,它在第一列中也不起作用。以下是我试图转换索引列的方式:

1
time = df1.as_matrix(columns = df1.columns[:,0])

但我得到

1
too many indices for array

这是我的数据框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
df1
Out[13]:
                                 0
2015-11-19 23:59:54.500 -20.186533
2015-11-19 23:59:54.625 -20.272575
2015-11-19 23:59:54.750 -20.185249
2015-11-19 23:59:54.875 -20.247126
2015-11-19 23:59:55.000 -20.205975
2015-11-19 23:59:55.125 -20.281376
2015-11-19 23:59:55.250 -20.238962
2015-11-19 23:59:55.375 -20.300100
2015-11-19 23:59:55.500 -20.311625
2015-11-19 23:59:55.625 -20.264126
2015-11-19 23:59:55.750 -20.266762
2015-11-19 23:59:55.875 -20.224825
2015-11-19 23:59:56.000 -20.211288
2015-11-19 23:59:56.125 -20.163288
2015-11-19 23:59:56.250 -20.254587
2015-11-19 23:59:56.375 -20.125738
2015-11-19 23:59:56.500 -20.146749
2015-11-19 23:59:56.625 -20.161976
2015-11-19 23:59:56.750 -20.126276
2015-11-19 23:59:56.875 -20.082863
2015-11-19 23:59:57.000 -20.030237
2015-11-19 23:59:57.125 -20.098312
2015-11-19 23:59:57.250 -20.146214
2015-11-19 23:59:57.375 -20.030476
2015-11-19 23:59:57.500 -20.018661
2015-11-19 23:59:57.625 -20.029900
2015-11-19 23:59:57.750 -19.970963
2015-11-19 23:59:57.875 -19.994637
2015-11-19 23:59:58.000 -20.097612
2015-11-19 23:59:58.125 -19.952700


您只需执行df.index.values

1
2
3
4
df = pd.DataFrame(index=['a', 'b', 'c'])

df.index.values
# array(['a', 'b', 'c'], dtype=object)


根据pandas 0.24.x发行说明:"添加了series.array和index.array以提取支持序列或索引的数组…我们没有删除或弃用series.values或dataframe.values,但我们强烈建议并使用.array.to_numpy()"。

看起来此主要版本更新完全满足您的需要:)


试试time = df1.as_matrix(columns=df1.columns[0:1])。看起来列应该是一个一维数组(实际上是一个Index),给一维数组两个索引会产生这个错误。