如何在大型 Pandas 数据框中显示所有列的名称?
- 2025-03-26 09:08:00
- admin 原创
- 15
问题描述:
我有一个由数百列组成的数据框,我需要查看所有列名。
我做了什么:
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)
如何显示所有列而不是截断列表?
解决方案 1:
您可以全局设置打印选项。我认为这应该可行:
方法 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())
解决方案 2:
要获取 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']
解决方案 3:
这样就成功了。注意使用display()
而不是 print。
with pd.option_context('display.max_rows', 5, 'display.max_columns', None):
display(my_df)
编辑:
display
需要使用,因为pd.option_context
设置仅适用于display
和而不适用于print
。
解决方案 4:
接受的答案导致我的列名换行。要显示所有列名而不换行,请同时设置 display.max_columns 和display.width:
pandas.set_option('display.max_columns', None)
pandas.set_option('display.width', 1000)
解决方案 5:
如果要查看 Pandas df.head() 中的所有列,请在运行代码之前使用此代码片段。所有列数据都将可见。
pd.set_option('display.max_columns', None)
此后创建数据框并尝试此操作。
df.head()
它将打印所有列,而不是在较大的数据集中显示“....”
解决方案 6:
在交互式控制台中,很容易做到:
data_all2.columns.tolist()
或者在脚本中这样写:
print(data_all2.columns.tolist())
解决方案 7:
对我有用的是:
pd.options.display.max_seq_items = None
您还可以将其设置为大于列数的整数。
解决方案 8:
我发现最简单的方法就是
list(df.columns)
就我个人而言,我不想改变全局变量,因为我并不经常想看到所有列名。
解决方案 9:
这不是一个常规答案,但我猜你可以转置数据框来查看行而不是列。我使用这个是因为我发现查看行比查看列更“直观”:
data_all2.T
这应该可以让您查看所有行。此操作不是永久性的,它只是让您查看数据框的转置版本。
如果行仍然被截断,只需用来print(data_all2.T)
查看所有内容。
解决方案 10:
你可以尝试这个
pd.pandas.set_option('display.max_columns', None)
解决方案 11:
试试这个 -
df.列.值
解决方案 12:
for i in df2.columns.tolist():
print(i)
解决方案 13:
要获取所有列名,您可以迭代data_all2.columns
。
columns = data_all2.columns
for col in columns:
print col
您将获得所有列名。或者您可以将所有列名存储到另一个列表变量,然后打印列表。
解决方案 14:
你可以这样做
df.info(show_counts=True)
它将显示所有列。设置show_counts
为True
显示数据计数not_null
。
解决方案 15:
df.head(None)
这样,你就可以看到所有带有格式数据框的东西了。你需要写
data_all2.head(None)
解决方案 16:
我在控制台上打印每一列的常用功能是:
pandas.set_option('display.expand_frame_repr', False)
解决方案 17:
一个快速而肮脏的解决方案是将其转换为字符串
print(' '.join(data_all2.columns))
会导致它们全部打印出来,并用制表符分隔。当然,请注意,有 102 个名字,而且它们都很长,阅读起来会有点困难
解决方案 18:
我知道这是重复,但我总是复制粘贴并修改 YOLO 的答案:
pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
解决方案 19:
我可能偏离了主题,但我带着同样类型的问题来到这个帖子,我发现如果您想查看长列表和索引中的所有内容,这就是简单的答案。
这是我在 Spyder 中使用的:
print(df.info())
或者这是 Jupyter 所需要的:
df.info()
解决方案 20:
如果你只想查看所有列,你可以做一些这样的快速修复
cols = data_all2.columns
现在 cols 将表现为可以索引的迭代变量。例如
cols[11:20]
解决方案 21:
我有很多重复的列名,一旦我运行
df = df.loc[:,~df.columns.duplicated()]
我能够看到完整的专栏列表
来源:
https ://stackoverflow.com/a/40435354/5846417
解决方案 22:
“df.types”将数据框“df”的所有列作为行输出,并且作为附加奖励,您还将获得数据类型。
解决方案 23:
您可以使用以下之一
print(df.columns.tolist())
print(df_data.columns.values)
print(list(df.columns))