我想从Pandas DataFrame中获得列标题的列表。DataFrame将来自用户输入,所以我不知道有多少列或它们将被称为什么。
例如,如果我有一个这样的数据帧:
>>> my_dataframe
y gdp cap
0 1 2 5
1 2 3 9
2 8 7 2
3 3 4 7
4 6 7 7
5 4 8 3
6 8 2 8
7 9 9 10
8 6 6 4
9 10 10 7
我会得到一个这样的列表:
>>> header_list
['y', 'gdp', 'cap']
如果DataFrame碰巧有一个Index或MultiIndex,你也想把它们包括在列名中:
names = list(filter(None, df.index.names + df.columns.values.tolist()))
它避免调用reset_index(),因为对于这样一个简单的操作,reset_index()会造成不必要的性能损失。
我经常遇到这种情况,因为我从数据库中穿梭数据,其中dataframe索引映射到一个主键/唯一键,但对我来说实际上只是另一个“列”。对于熊猫来说,有一个内置的方法可能是有意义的(完全有可能我错过了它)。
>>> list(my_dataframe)
['y', 'gdp', 'cap']
要在调试器模式下列出数据帧的列,使用列表理解式:
>>> [c for c in my_dataframe]
['y', 'gdp', 'cap']
顺便说一下,你可以简单地使用sorted:
>>> sorted(my_dataframe)
['cap', 'gdp', 'y']
DataFrame遵循类似字典的约定,即遍历对象的“键”。
my_dataframe.keys()
创建一个键/列列表-对象方法to_list()和Pythonic方法:
my_dataframe.keys().to_list()
list(my_dataframe.keys())
DataFrame的基本迭代返回列标签:
[column for column in my_dataframe]
不要将DataFrame转换为列表,只是为了获得列标签。在寻找方便的代码示例时,不要停止思考。
xlarge = pd.DataFrame(np.arange(100000000).reshape(10000,10000))
list(xlarge) # Compute time and memory consumption depend on dataframe size - O(N)
list(xlarge.keys()) # Constant time operation - O(1)