0
s1 = pd.Series([5, 6, 7])
s2 = pd.Series([7, 8, 9])

df = pd.DataFrame([list(s1), list(s2)],  columns =  ["A", "B", "C"])

   A  B  C
0  5  6  7
1  8  9  1

我需要:[5,6,7,8,9,1]

是否有直接执行此操作的功能?

4

6 回答 6

2

只是stack将创建单个柱状系列的数据框,然后调用tolist()

>>> df.stack().to_list()
[5, 6, 7, 8, 9, 1]
于 2021-07-21T19:49:18.067 回答
2

如果您不想使用 numpy,这里有一个替代方案:

df.T.melt()['value'].to_list()
于 2021-07-21T19:51:19.853 回答
2

您可以随时将数据帧转换为 numpy 数组和 ravel:

df.to_numpy().ravel()
于 2021-07-21T19:39:39.307 回答
1

你可以做

import numpy as np
np.ravel(df).tolist()
于 2021-07-21T19:40:58.563 回答
1

我将假设您的输出输入错误。这是我对输出的看法。不幸的是,它不是“一个功能”。

result = [x for y in df.itertuples(False) for x in y]
于 2021-07-21T19:48:10.067 回答
-1

尝试将其转换为列表。

import numpy

numpy.ravel(df).tolist()
于 2021-07-21T19:42:38.390 回答