将只有一列的熊猫数据框转换为一维列表

Jua*_*Chô 1 python list dataframe pandas

我正在使用熊猫数据框:

import pandas as pd
a = [1,2,3]
i = [5,2,3]
df = pd.DataFrame( { "foo" : i, "bar" : a } )
df = df.set_index("foo")
l = df.values.tolist()
# l = [[1], [2], [3]]
Run Code Online (Sandbox Code Playgroud)

这很烦人,我喜欢 l = [1,2,3]。为什么我们会得到一个列表列表?怎么才能得到一个列表?

cs9*_*s95 5

这是一个不错的小实用函数,df.squeeze在 v0.20 中引入 -

df.squeeze()

foo
5    1
2    2
3    3
Name: bar, dtype: int64

df.squeeze().tolist()
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

如果数据框只有一列,则将其降级为一系列。否则,什么都不会发生。

df
     bar  baz
foo          
5      1    4
2      2    5
3      3    6

df.squeeze()

     bar  baz
foo          
5      1    4
2      2    5
3      3    6
Run Code Online (Sandbox Code Playgroud)

此函数的优点是您可以安全地调用.tolist()其输出,而无需对形状执行任何其他代码检查以返回所需的输出。