如何从数据框中选择所有数据?

2024-06-26 18:00:55 发布

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

我想选择一个数据帧中的所有数据(除了索引、列索引和最右边的列-请参见下图)并将其存储到一个系列中。这可能是显而易见的,但我不能得到任何工作。例如,我尝试过a = nai_data.ix[0:19],但它再次返回一个包含所有索引的新数据帧,我只需要一系列数据。所以我试过a = pd.Series(nai_data.ix[0:19]),但也没用。我肯定有一个简单的方法可以做到这一点,但不能找出。感谢您的帮助enter image description here


Tags: 数据方法dataseriespdixnai
1条回答
网友
1楼 · 发布于 2024-06-26 18:00:55

也许您正在寻找^{},这可以看作是将列索引移到行索引中:

In [12]: np.random.seed(2015)

In [13]: df = pd.DataFrame(np.random.randint(10, size=(3,4)))

In [14]: df
Out[14]: 
   0  1  2  3
0  2  2  9  6
1  8  5  7  8
2  0  6  7  8

In [15]: df.stack()
Out[15]: 
0  0    2
   1    2
   2    9
   3    6
1  0    8
   1    5
   2    7
   3    8
2  0    0
   1    6
   2    7
   3    8
dtype: int64

如果不需要多索引,请调用reset_index()

In [16]: df.stack().reset_index(drop=True)
Out[16]: 
0     2
1     2
2     9
3     6
4     8
5     5
6     7
7     8
8     0
9     6
10    7
11    8
dtype: int64

要选择除最后一列以外的所有列,可以使用^{}

In [17]: df.iloc[:, :-1]
Out[17]: 
   0  1  2
0  2  2  9
1  8  5  7
2  0  6  7

In [18]: df.iloc[:, :-1].stack()
Out[18]: 
0  0    2
   1    2
   2    9
1  0    8
   1    5
   2    7
2  0    0
   1    6
   2    7
dtype: int64

另一种方法是对底层NumPy数组进行切片和展平:

In [21]: df.values
Out[21]: 
array([[2, 2, 9, 6],
       [8, 5, 7, 8],
       [0, 6, 7, 8]])

In [22]: df.values[:, :-1]
Out[22]: 
array([[2, 2, 9],
       [8, 5, 7],
       [0, 6, 7]])

In [23]: df.values[:, :-1].ravel()
Out[23]: array([2, 2, 9, 8, 5, 7, 0, 6, 7])

然后用这些数据来构建这个系列:

In [24]: pd.Series(df.values[:, :-1].ravel())
Out[24]: 
0    2
1    2
2    9
3    8
4    5
5    7
6    0
7    6
8    7
dtype: int64

相关问题 更多 >