扩展的可迭代解包(Python 3.5+):[*df]
和朋友
Python 3.5 引入了解包泛化 (PEP 448) 。因此,以下操作都是可能的。
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(5))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
如果你想要一个list
......
[*df]
# ['A', 'B', 'C']
或者,如果你想要一个set
,
{*df}
# {'A', 'B', 'C'}
或者,如果你想要一个tuple
,
*df, # Please note the trailing comma
# ('A', 'B', 'C')
或者,如果您想将结果存储在某处,
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
...如果您是将咖啡转换为打字声音的那种人,那么这将更有效地消耗您的咖啡;)
PS:如果性能很重要,您将需要放弃上述解决方案以支持
df.columns.to_numpy().tolist()
# ['A', 'B', 'C']
这类似于Ed Chum 的答案,但更新为 v0.24,其中.to_numpy()
首选使用.values
. 有关更多信息,请参阅
此答案(由我提供)。
目视检查
由于我已经在其他答案中看到了这一点,因此您可以使用可迭代解包(不需要显式循环)。
print(*df)
A B C
print(*df, sep='\n')
A
B
C
对其他方法的批评
不要for
对可以在一行中完成的操作使用显式循环(列表推导是可以的)。
接下来, usingsorted(df)
不会保留列的原始顺序。为此,您应该list(df)
改用。
接下来是糟糕list(df.columns)
的list(df.columns.values)
建议(从当前版本开始,v0.24)。Index
(从 返回df.columns
)和 NumPy 数组(从 返回)都df.columns.values
定义.tolist()
了更快、更惯用的方法。
最后,listification ie,list(df)
应该只作为上述 Python 3.4 或更早版本的方法的简洁替代方法,在扩展解包不可用的情况下。