【问题标题】:How to show all columns' names on a large pandas dataframe?如何在大熊猫数据框中显示所有列的名称?
【发布时间】:2018-08-17 17:48:24
【问题描述】:

我有一个包含数百列的数据框,我需要查看所有列名。

我做了什么:

In[37]:
data_all2.columns

输出是:

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

如何显示所有列,而不是截断列表?

【问题讨论】:

    标签: python pandas dataframe options


    【解决方案1】:

    如果您只想查看所有列,您可以做一些这样的快速修复

    cols = data_all2.columns
    

    现在 cols 将表现为一个可以索引的迭代变量。例如

    cols[11:20]
    

    【讨论】:

      【解决方案2】:

      快速而肮脏的解决方案是将其转换为字符串

      print('\t'.join(data_all2.columns))
      

      会导致所有这些都被打印出来,用制表符分隔 当然,请注意,有 102 个名字,而且都相当长,这将有点难以阅读

      【讨论】:

        【解决方案3】:

        要获取所有列名,您可以遍历 data_all2.columns

        columns = data_all2.columns
        for col in columns:
            print col
        

        您将获得所有列名。 或者您可以将所有列名存储到另一个列表变量中,然后打印列表。

        【讨论】:

          【解决方案4】:

          您可以全局设置打印选项。我认为这应该可行:

          方法一:

          pd.set_option('display.max_columns', None)
          pd.set_option('display.max_rows', None)
          

          方法二:

          pd.options.display.max_columns = None
          pd.options.display.max_rows = None
          

          这将允许您在执行.head() 时查看所有列名和行。不会截断任何列名。


          如果您只想查看列名,可以这样做:

          print(df.columns.tolist())
          

          【讨论】:

          • @EEE 不,它确实回答了这个问题。我刚试过,它显示所有列而不是截断列表。他没有说截断字段,他说的是列列表。
          • 啊,你是对的。我错了。谢谢,@rjurney。抱歉,YOLO。我在做 df.columns 而不是 df.head()!我应该删除我之前不正确的评论吗?
          • 最好设置一个像 500 这样的有限值,否则如果你打印一个大数据框,它将永远运行
          • 抱歉,如何关闭它?目前我愚蠢的解决方案只是关闭 Anaconda 并重新打开它。那么,不这样做有合法的理由吗?
          • @ChenLizi 要重置它有pd.reset_option("display.max_rows")
          【解决方案5】:

          在交互式控制台中,很容易做到:

          data_all2.columns.tolist()
          

          或者在脚本中:

          print(data_all2.columns.tolist())
          

          【讨论】:

            【解决方案6】:

            要获取一个DataFrame的所有列名,在这个例子中是df_data,你只需要使用命令df_data.columns.values。 这将向您显示一个包含数据框所有列名称的列表

            代码:

            df_data=pd.read_csv('../input/data.csv')
            print(df_data.columns.values)
            

            输出:

            ['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']
            

            【讨论】:

            • 这是这个问题的真正答案,谢谢@pink.slash
            • 如果我也想查看列号 - 可以吗?我的 df 有 200 列,我想使用其中的一小部分,我想我可以使用数字而不是写每个列名。
            • 嗯,它在我的系统上不起作用,它显示的比 df_data.columns 还要少...
            【解决方案7】:

            对我有用的是:

            pd.options.display.max_seq_items = None
            

            您也可以将其设置为大于列数的整数。

            【讨论】:

              【解决方案8】:

              我有很多重复的列名,一旦我跑了

              df = df.loc[:,~df.columns.duplicated()]
              

              我能够看到完整的列列表

              信用: https://stackoverflow.com/a/40435354/5846417

              【讨论】:

                【解决方案9】:

                这样就可以了。注意使用display() 而不是打印。

                with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
                    display(my_df)
                

                编辑:

                需要使用display,因为pd.option_context 设置仅适用于display 而不适用于print

                【讨论】:

                • 我喜欢 with 关键字将选项仅应用于下面的块。但是它适用于print()。为什么我需要使用display() 而不是print()
                • @VincentAgami 需要使用显示,因为 pd.option_context 设置仅适用于显示而不适用于打印。我已更新答案以包含此信息。
                【解决方案10】:

                我知道这是重复但我总是复制粘贴和修改 YOLO 的答案:

                pd.set_option('display.max_columns', 500)
                pd.set_option('display.max_rows', 500)
                

                【讨论】:

                  【解决方案11】:

                  你可以试试这个

                  pd.pandas.set_option('display.max_columns', None)
                  

                  【讨论】:

                    【解决方案12】:

                    不是传统的答案,但我想您可以转置数据框以查看行而不是列。我使用它是因为我发现查看行比查看列更“直观”:

                    data_all2.T
                    

                    这应该可以让您查看所有行。 此操作不是永久性的,它只是让您查看数据帧的转置版本。

                    如果行仍然被截断,只需使用print(data_all2.T) 查看所有内容。

                    【讨论】:

                    • 不是一个传统的答案,但我想你可以转置数据框来查看行而不是列。他们想要的只是列名,不是吗? 如果行仍然被截断,只需使用 print(data_all2.T) 查看所有内容。 打印结果如何解决问题?你还没有打印出来吗?
                    【解决方案13】:

                    我发现的最简单的方法就是

                    list(df.columns)
                    

                    我个人不想更改全局变量,我不想经常看到所有列名。

                    【讨论】:

                    • 这就是为什么你可以使用上下文管理器来限制范围。
                    【解决方案14】:

                    接受的答案导致我的列名环绕。要显示所有列名而不换行,请同时设置 display.max_columns 和 display.width:

                    pandas.set_option('display.max_columns', None)
                    pandas.set_option('display.width', 1000)
                    

                    【讨论】:

                      【解决方案15】:

                      我可能不合时宜,但我来到这个帖子时遇到了相同类型的问题,我发现如果你想查看长列表和索引中的所有内容,这是一个简单的答案。

                      这是我在 Spyder 中使用的:

                      print(df.info()) 
                      

                      或者这就是 Jupyter 所需要的:

                      df.info()
                      

                      【讨论】:

                        【解决方案16】:

                        你可以这样做

                        df.info(show_counts=True)
                        

                        它将显示所有列。将show_counts 设置为True 会显示not_null 数据的计数。

                        【讨论】:

                          猜你喜欢
                          • 2021-02-03
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-08-16
                          • 2019-09-30
                          • 1970-01-01
                          相关资源
                          最近更新 更多