如何在大型 pandas 数据框中显示所有列的名称?
How to show all columns' names on a large pandas dataframe?
我有一个包含数百列的数据框,我需要查看所有列名。
我做了什么:
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个名字,都比较长,读起来会有点吃力
要获取所有列名,您可以遍历 data_all2.columns
。
columns = data_all2.columns
for col in columns:
print col
您将获得所有列名。
或者您可以将所有列名存储到另一个列表变量,然后打印列表。
您可以全局设置打印选项。我认为这应该有效:
方法一:
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()
时查看所有列名和行。 None 的列名称将被截断。
如果您只想查看列名,您可以这样做:
print(df.columns.tolist())
在交互式控制台中,很容易做到:
data_all2.columns.tolist()
或者脚本中的这个:
print(data_all2.columns.tolist())
获取一个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']
对我有用的是以下内容:
pd.options.display.max_seq_items = None
您也可以将其设置为大于列数的整数。
我有很多重复的列名,有一次我 运行
df = df.loc[:,~df.columns.duplicated()]
我能够看到完整的列列表
信用:
这样就可以了。注意使用 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)
不是常规答案,但我想您可以转置数据框以查看行而不是列。我使用它是因为我发现查看行 'intuitional' 多于查看列:
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())
或者这是 Jupyter 所需要的:
df.info()
你可以这样做
df.info(show_counts=True)
它将显示所有列。将 show_counts
设置为 True
显示 not_null
条数据的计数。
我有一个包含数百列的数据框,我需要查看所有列名。
我做了什么:
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个名字,都比较长,读起来会有点吃力
要获取所有列名,您可以遍历 data_all2.columns
。
columns = data_all2.columns
for col in columns:
print col
您将获得所有列名。 或者您可以将所有列名存储到另一个列表变量,然后打印列表。
您可以全局设置打印选项。我认为这应该有效:
方法一:
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()
时查看所有列名和行。 None 的列名称将被截断。
如果您只想查看列名,您可以这样做:
print(df.columns.tolist())
在交互式控制台中,很容易做到:
data_all2.columns.tolist()
或者脚本中的这个:
print(data_all2.columns.tolist())
获取一个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']
对我有用的是以下内容:
pd.options.display.max_seq_items = None
您也可以将其设置为大于列数的整数。
我有很多重复的列名,有一次我 运行
df = df.loc[:,~df.columns.duplicated()]
我能够看到完整的列列表
信用:
这样就可以了。注意使用 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)
不是常规答案,但我想您可以转置数据框以查看行而不是列。我使用它是因为我发现查看行 'intuitional' 多于查看列:
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())
或者这是 Jupyter 所需要的:
df.info()
你可以这样做
df.info(show_counts=True)
它将显示所有列。将 show_counts
设置为 True
显示 not_null
条数据的计数。