如何显示所有列'一个大型熊猫数据框架上的名字?

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

我做了什么:

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)

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

566196 次浏览

如果你只是想看到所有的列,你可以做一些这样的事情作为快速修复

cols = data_all2.columns

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

cols[11:20]

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

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

将导致所有这些字符被制表符分开打印出来 当然,要注意的是,102个名称都相当长,读起来有点困难

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

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

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

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

方法1:

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

方法2:

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

这将允许您查看所有列名&当你在执行.head()。任何列名都不会被截断。


如果你只是想看到列名,你可以这样做:

print(df.columns.tolist())

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

data_all2.columns.tolist()

或者在脚本中:

print(data_all2.columns.tolist())
要获得一个DataFrame的所有列名,在这个例子中df_data,你只需要使用命令df_data.columns.values。 这将显示您的Dataframe

的所有列名的列表

代码:

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()]

我可以看到完整的列列表

< p >信用: https://stackoverflow.com/a/40435354/5846417 < / p >

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

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

编辑:

必须使用display,因为pd.option_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_all2.T)来查看所有内容。

我找到的最简单的方法就是

list(df.columns)

就我个人而言,我不想改变全局变量,我不是经常想看到所有的列名。

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

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

我可能离题了,但我来到这个线程与相同类型的问题,我发现这是一个简单的答案,如果你想在一个长列表和索引中看到所有东西。

这是我在Spyder中使用的:

print(df.info())

或者这就是木星所需要的:

df.info()

你可以这样做

df.info(show_counts=True)

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

“df.types"将数据帧'df'的所有列输出为行,作为附带奖励,您还将获得数据类型。

试试这个——

df.columns.values

df.head(None)
通过这种方式,你可以看到所有带有格式数据帧的东西。 你需要写

data_all2.head(None)

我的去打印每一列在我的控制台是:

pandas.set_option('display.expand_frame_repr', False)
for i in df2.columns.tolist():
print(i)

如果你想看到Pandas df.head()中的所有列,那么在运行你的代码之前使用这个片段。所有列数据都是可见的。

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

在此之后,创建您的数据框架,并尝试这个。

df.head()

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