我有一个pandas数据帧,我将其转换为numpy数组,如下所示:
df.values
给出以下输出:
array([[2],
[0],
[1],
...,
[0],
[1],
[0]], dtype=int64)
但是我想获得如下列表:
[0, 2, 3]
知道怎么做吗?
答案 0 :(得分:6)
也许您可以使用iloc
或loc
来选择列,然后使用tolist
:
print df
a
0 2
1 0
2 1
3 0
4 1
5 0
print df.values
[[2]
[0]
[1]
[0]
[1]
[0]]
print df.iloc[:, 0].tolist()
[2, 0, 1, 0, 1, 0]
或者也许:
print df.values.tolist()
[[2L], [0L], [1L], [0L], [1L], [0L]]
print df.iloc[:, 0].values.tolist()
[2L, 0L, 1L, 0L, 1L, 0L]
print df.loc[:, 'a'].tolist()
[2, 0, 1, 0, 1, 0]
print df['a'].tolist()
[2, 0, 1, 0, 1, 0]
但也许你需要flatten
:
print df.values.flatten()
[2 0 1 0 1 0]
print df.iloc[:, 0].values.flatten()
[2 0 1 0 1 0]
答案 1 :(得分:1)
看起来你有一个包含一列和多行的数据框。请记住,这是一个二维数组,您必须切片第一列,然后列出该列中的值。
这应该这样做:
df[0].values.tolist()
df[0]
- 这将选择第一列中的所有值。对于第二列,您使用df[1]
第三个df[2]
,依此类推。
您可以通过运行df.shape
来判断数据框的形状。这将告诉您数据框中存在多少行和列,例如(9,1)
表示9行1列