首页 文章

从pandas DataFrame列 Headers 中获取列表

提问于
浏览
642

我想从pandas DataFrame中获取列 Headers 列表 . 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]

17 回答

  • 1

    有一种内置的方法,性能最高:

    my_dataframe.columns.values.tolist()
    

    .columns 返回 Index.columns.values 返回 array ,并且它有一个辅助函数来返回 list .

    EDIT

    对于那些讨厌打字的人来说,这可能是最短的方法:

    list(df)
    
  • 0

    我觉得问题值得进一步解释 .

    正如@fixxxer所指出的,答案取决于您在项目中使用的pandas版本 . 使用 pd.__version__ 命令可以获得哪些 .

    如果你出于某种原因像我一样(在debian jessie上使用0.14.1)使用比0.16.0更旧的熊猫版本,那么你需要使用:

    df.keys().tolist() 因为尚未实施 df.columns 方法 .

    这种密钥方法的优点是,它甚至可以在较新版本的熊猫中使用,因此它更具通用性 .

  • 10

    做了一些快速测试,也许不出所料,使用 dataframe.columns.values.tolist() 的内置版本是最快的:

    In [1]: %timeit [column for column in df]
    1000 loops, best of 3: 81.6 µs per loop
    
    In [2]: %timeit df.columns.values.tolist()
    10000 loops, best of 3: 16.1 µs per loop
    
    In [3]: %timeit list(df)
    10000 loops, best of 3: 44.9 µs per loop
    
    In [4]: % timeit list(df.columns.values)
    10000 loops, best of 3: 38.4 µs per loop
    

    (我仍然非常喜欢 list(dataframe) ,所以感谢EdChum!)

  • 19
    n = []
    for i in my_dataframe.columns:
        n.append(i)
    print n
    
  • 37

    可以使用索引属性

    df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)},
                     index=['a', 'b', 'c'])
    
  • 2
    >>> list(my_dataframe)
    ['y', 'gdp', 'cap']
    

    要在调试器模式下列出数据框的列,请使用列表推导:

    >>> [c for c in my_dataframe]
    ['y', 'gdp', 'cap']
    

    顺便说一句,您只需使用 sorted 即可获得排序列表:

    >>> sorted(my_dataframe)
    ['cap', 'gdp', 'y']
    
  • 29

    要快速,整洁,直观地检查,请尝试以下方法:

    for col in df.columns:
        print col
    
  • 3

    此解决方案列出了对象my_dataframe的所有列:

    print(list(my_dataframe))
    
  • 10

    DataFrame遵循迭代对象“键”的类似dict的约定 .

    my_dataframe.keys()
    

    创建键/列列表 - 对象方法 to_list() 和pythonic方式

    my_dataframe.keys().to_list()
    list(my_dataframe.keys())
    

    DataFrame上的Basic iteration返回列标签

    [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)
    
  • 70

    它变得更简单(通过熊猫0.16.0):

    df.columns.tolist()
    

    将在一个很好的列表中提供列名称 .

  • 14

    正如Simeon Visser所回答的......你可以做到

    list(my_dataframe.columns.values)
    

    要么

    list(my_dataframe) # for less typing.
    

    但我认为最大的好处是:

    list(my_dataframe.columns)
    

    它是明确的,同时不会不必要地长 .

  • 2

    这很有意思,但 df.columns.values.tolist() 几乎比 df.columns.tolist() 快3倍但是我认为它们是相同的:

    In [97]: %timeit df.columns.values.tolist()
    100000 loops, best of 3: 2.97 µs per loop
    
    In [98]: %timeit df.columns.tolist()
    10000 loops, best of 3: 9.67 µs per loop
    
  • -1

    在笔记本中

    对于IPython笔记本中的数据探索,我首选的方法是:

    sorted(df)
    

    这将产生易于阅读的按字母顺序排列的列表 .

    在代码存储库中

    在代码中我发现它更明确

    df.columns
    

    因为它告诉其他人阅读你的代码你在做什么 .

  • 0

    这为我们提供了列表中列的名称:

    list(my_dataframe.columns)
    

    另一个名为tolist()的函数也可以使用:

    my_dataframe.columns.tolist()
    
  • 1126

    那是 my_dataframe.columns .

  • 292
    list(a_dataframe)
    

    这应该做到!

  • 2

    您可以通过执行以下操作将值作为列表获取:

    list(my_dataframe.columns.values)
    

    你也可以简单地使用:

    list(my_dataframe)
    

相关问题