如何在pandas dataframe上显示所有列名?

Nab*_*zir 37 python show dataframe pandas

我有一个由数百列组成的数据框,我也需要查看所有列名称.

我做了什么:

In[37]:
data_all2.columns
Run Code Online (Sandbox Code Playgroud)

输出是:

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)
Run Code Online (Sandbox Code Playgroud)

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

YOL*_*OLO 53

您可以全局设置打印选项.我认为这应该有效:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
Run Code Online (Sandbox Code Playgroud)

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

如果只想查看列名,可以执行以下操作: cols = df.columns.tolist()

  • @EEE 不,它确实回答了这个问题。我刚刚尝试过,它显示所有列而不是截断的列表。他没有说截断字段,他说的是列列表。 (4认同)
  • 这不适用于列出列名 (3认同)
  • 如果你想防止输出换行,那么你需要将“display.width”选项设置为一个非常大的数字。例如:`pd.set_option('display.width', 9999)` (3认同)
  • 啊,你是对的。我错了。谢谢,@ rjurney。抱歉,YOLO。我正在做df.columns而不是df.head()!我应该删除不正确的先前评论吗? (2认同)
  • 抱歉,但是如何关闭它?目前我的愚蠢解决方案就是关闭 Anaconda 并重新打开它。那么,不这样做是否有合法的方法将其取出? (2认同)

pin*_*ash 19

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

码:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)
Run Code Online (Sandbox Code Playgroud)

输出:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']
Run Code Online (Sandbox Code Playgroud)


Spi*_*oid 18

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

pandas.set_option('display.max_columns', None)
pandas.set_option('display.width', 1000)
Run Code Online (Sandbox Code Playgroud)


nic*_*ico 14

这将解决问题。注意使用display()而不是打印。

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)
Run Code Online (Sandbox Code Playgroud)

编辑:

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


Kus*_*sar 12

如果您想查看 Pandas df.head() 中的所有列,请在运行代码之前使用此代码片段。所有列数据都将可见。

pd.pandas.set_option('display.max_columns', None)
Run Code Online (Sandbox Code Playgroud)

之后创建您的数据框,然后尝试这个。

df.head()
Run Code Online (Sandbox Code Playgroud)

它将打印所有列,而不是在较大的数据集中显示“....”。


She*_*man 9

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

list(df.columns)
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我不想更改全局变量,我并不经常想查看所有列名称。


EEE*_*EEE 6

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

data_all2.columns.tolist()
Run Code Online (Sandbox Code Playgroud)

或者在脚本中这样:

print(data_all2.columns.tolist())
Run Code Online (Sandbox Code Playgroud)


小智 5

对我有用的是以下内容:

pd.options.display.max_seq_items = None
Run Code Online (Sandbox Code Playgroud)

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


Ama*_*man 5

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

data_all2.T
Run Code Online (Sandbox Code Playgroud)

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

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