在pandas中从数据框中的所有列输出数据

2024-03-28 10:15:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为params.csv的csv文件。我打开了ipython qtconsole,并创建了一个熊猫dataframe,使用:

import pandas
paramdata = pandas.read_csv('params.csv', names=paramnames)

其中,paramnames是字符串对象的python列表。paramnames(实际列表的长度为22)的示例:

paramnames = ["id",
"fc",
"mc",
"markup",
"asplevel",
"aspreview",
"reviewpd"]

在ipython提示下,如果键入paramdata并按enter键,则不会获得包含列和值的数据帧,如Pandas website上的示例所示。相反,我得到了关于数据帧的信息。我得到:

In[35]: paramdata
Out[35]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 59 entries, 0 to 58
Data columns:
id                    59  non-null values
fc                    59  non-null values
mc                    59  non-null values
markup                59  non-null values
asplevel              59  non-null values
aspreview             59  non-null values
reviewpd              59  non-null values

如果我键入paramdata['mc'],那么我将获得mc列的预期值。我有两个问题:

(1)在pandas网站上的示例中(例如,请参见这里的df输出:http://pandas.sourceforge.net/indexing.html#additional-column-access),输入数据帧的名称将给出实际数据。为什么我要获取上面所示的数据帧信息而不是实际数据?我需要在某处设置一些输出选项吗?

(2)如何将数据框中的所有列输出到屏幕而不必键入它们的名称,即不必键入paramdata[['id','fc','mc']]

我使用的是熊猫0.8版。

谢谢你。


Tags: csv数据id示例pandas键入ipythonparams
3条回答

我知道这是个老问题,但我也遇到了类似的问题,我想我所做的也会对你有帮助。

我使用to_csv()方法并向stdout写入:

import sys

paramdata.to_csv(sys.stdout)

这将转储整个数据帧,不管它是否可以很好地打印,并且您可以使用to-csv参数来配置列分隔符、是否打印索引等

编辑:现在可以使用None作为.to_csv()的目标,并具有类似的效果,可以说效果更好:

paramdata.to_csv(None)

使用:

pandas.set_option('display.max_columns', 7)

这将迫使Pandas显示您拥有的7列。或者更普遍地说:

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

这将强制它显示任意数量的列。

说明:max_columns的默认值是0,它告诉Pandas只有当所有列都可以压缩到控制台的宽度时才显示表。

或者,您可以使用以下命令将控制台宽度(以字符为单位)从默认值80更改为:

pandas.set_option('display.width', 200)

屏幕上显示的数据太多,因此将显示摘要。

如果您仍要输出数据(它可能不适合屏幕,看起来不太好):

print paramdata.values

将数据帧转换为其numpy数组矩阵表示形式。

paramdata.columns

存储相应的列名和

paramdata.index

存储相应的索引(行名称)。

相关问题 更多 >