Python 如何在dataframe上显示所有列的名称?

Python 如何在dataframe上显示所有列的名称?,python,pandas,dataframe,show,Python,Pandas,Dataframe,Show,我有一个由数百列组成的数据框架,我需要查看所有的列名 我所做的: In[37]: data_all2.columns 输出为: Out[37]: Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food', 'government', 'internet', 'isipulsa', ... 'overdue_3months_feature78', 'ove

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

我所做的:

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)

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

如果您只想查看所有列,可以快速执行此类操作

cols = data_all2.columns
现在cols将作为一个可以索引的迭代变量。比如说

cols[11:20]

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

print('\t'.join(data_all2.columns))
将导致它们全部以选项卡分隔打印出来
当然,请注意,对于102个名称,它们都相当长,这将有点难读懂

要获得所有的列名,您可以在
数据\u all2.columns
上迭代

columns = data_all2.columns
for col in columns:
    print col
您将获得所有列名。
或者,您可以将所有列名存储到另一个列表变量,然后打印列表。

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

方法1:

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
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']
方法2:

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
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']
这将允许您在执行
.head()
时查看所有列名和行。所有列名都不会被截断


如果只想查看列名,可以执行以下操作:

print(df.columns.tolist())

在交互式控制台中,很容易执行以下操作:

data_all2.columns.tolist()
或者在脚本中执行以下操作:

print(data_all2.columns.tolist())

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

代码:

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
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']
输出:

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
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']

对我起作用的是:

pd.options.display.max_seq_items = None

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

我有很多重复的列名,一旦运行

df = df.loc[:,~df.columns.duplicated()]
我能够看到列的完整列表

学分:
这样就可以了。注意使用
display()
代替打印

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


需要使用
display
,因为
pd.option\u context
设置仅适用于
display
,而不适用于
print
,我知道这是重复,但我总是复制粘贴和修改YOLO的答案:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
你可以试试这个

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

这不是一个常规的答案,但我想您可以将数据帧转换为查看行而不是列。我之所以使用此选项,是因为我发现查看行比查看列更“直观”:

data_all2.T
这将允许您查看所有行。此操作不是永久性的,它只允许您查看数据帧的转置版本


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

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

list(df.columns)

就我个人而言,我不想更改globals,我并不经常想看到所有列的名称。

@EEE不,它确实回答了这个问题。我刚试过,它显示所有的列,而不是一个被截断的列表。他没有说截断字段,他说的是列列表。啊,你说得对。我错了。谢谢,@rjuney。对不起,约洛。我在做df.columns而不是df.head()!我应该删除我之前不正确的评论吗?是的,我想是的。最好设置一个像500这样的有限值,否则如果你打印一个大的DataFrame抱歉,但是如何关闭它呢?目前,我愚蠢的解决方案只是关闭蟒蛇,然后重新打开它。那么,不这样做是否合法?这是这个问题的真实答案,谢谢@pink.slashIf我也想看看列号-可能吗?我的df有200个列,我想使用其中的一小部分,我想我可以使用数字而不是写每个列的名称。我喜欢
with
关键字将选项仅应用于下面的块。但是,它可以与
print()
配合使用。为什么我需要使用
display()
而不是
print()
?@VincentAgami需要使用display,因为pd.option\u上下文设置仅适用于显示而不适用于打印。我已经更新了答案以包含这些信息。这不是一个常规的答案,但我想你可以将数据框转换为行而不是列。他们想要的只是列名,不是吗?如果行仍然被截断,只需使用print(data_all2.T)即可查看所有内容。打印结果如何解决问题?你还没有打印出来吗?