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

这个问题在这里已有答案:

  • 如何展开输出显示以查看更多列?                                     13个答案

我有一个名为paramdata[['id','fc','mc']]的csv文件。我打开了mc并使用以下方法创建了一个pandas dataframe

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

其中,paramdata[['id','fc','mc']]是一个字符串对象的python列表。 mc的示例(实际列表的长度为22):

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

在ipython提示符下,如果我键入paramdata[['id','fc','mc']]并按Enter键,那么我不会获得包含列和值的数据框,如Pandas网站上的示例所示。 相反,我获得有关数据帧的信息。 我明白了:

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[['id','fc','mc']],那么我确实得到了mc列的预期值。 我有两个问题:

(1)在pandas网站上的例子中(例如,参见paramdata[['id','fc','mc']]的输出:[http://pandas.sourceforge.net/indexing.html#additional-column-access)]输入数据框的名称 给出实际数据。 为什么我如上所示获取有关数据帧的信息而不是实际数据? 我需要在某处设置一些输出选项吗?

(2)如何将数据帧中的所有列输出到屏幕而不必键入其名称,即无需键入类似paramdata[['id','fc','mc']]的内容。

我正在使用pandas 0.8版。

谢谢。

Curious2learn asked 2019-08-13T15:39:29Z
7个解决方案
237 votes

使用:

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)
Yariv answered 2019-08-13T15:41:16Z
38 votes

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

如果你想输出数据(它不太可能适合屏幕而且看起来不太好):

print paramdata.values

将数据帧转换为其numpy-array矩阵表示。

paramdata.columns

存储相应的列名称和

paramdata.index

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

eumiro answered 2019-08-13T15:40:22Z
24 votes

我知道这是一个老问题,但我遇到了类似的问题,我认为我所做的也适合你。

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

import sys

paramdata.to_csv(sys.stdout)

这应该转储整个数据帧,无论它是否可以很好地打印,您可以使用to_csv参数来配置列分隔符,是否打印索引等。

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

paramdata.to_csv(None)
user2428107 answered 2019-08-13T15:42:10Z
18 votes

ipython中,我使用它来打印一个运行良好的数据帧的一部分(打印前100行):

print paramdata.head(100).to_string()
Tomas Olsson answered 2019-08-13T15:42:41Z
9 votes

您还可以使用DataFrame.head(x)/.tail(x)显示DataFrame的前/后x行。

K Raphael answered 2019-08-13T15:43:16Z
4 votes

我是从R来到python,而R&#29; head()函数以一种非常方便的方式包含行来查看数据:

> head(cbind(mtcars, mtcars, mtcars))
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb  mpg cyl
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 21.0   6
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 21.0   6
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 22.8   4
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 21.4   6
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2 18.7   8
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1 18.1   6
                  disp  hp drat    wt  qsec vs am gear carb  mpg cyl disp  hp
Mazda RX4          160 110 3.90 2.620 16.46  0  1    4    4 21.0   6  160 110
Mazda RX4 Wag      160 110 3.90 2.875 17.02  0  1    4    4 21.0   6  160 110
Datsun 710         108  93 3.85 2.320 18.61  1  1    4    1 22.8   4  108  93
Hornet 4 Drive     258 110 3.08 3.215 19.44  1  0    3    1 21.4   6  258 110
Hornet Sportabout  360 175 3.15 3.440 17.02  0  0    3    2 18.7   8  360 175
Valiant            225 105 2.76 3.460 20.22  1  0    3    1 18.1   6  225 105
                  drat    wt  qsec vs am gear carb
Mazda RX4         3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     3.90 2.875 17.02  0  1    4    4
Datsun 710        3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 3.15 3.440 17.02  0  0    3    2
Valiant           2.76 3.460 20.22  1  0    3    1

我开发了以下小python函数来模仿这个功能:

def rhead(x, nrow = 6, ncol = 4):
    pd.set_option('display.expand_frame_repr', False)
    seq = np.arange(0, len(x.columns), ncol)
    for i in seq:
        print(x.loc[range(0, nrow), x.columns[range(i, min(i+ncol, len(x.columns)))]])
    pd.set_option('display.expand_frame_repr', True)

(这显然取决于熊猫和numpy)

generic_user answered 2019-08-13T15:43:59Z
0 votes

你可以使用序列切片语法,即

paramdata[:5] # first five records
paramdata[-5:] # last five records
paramdata[:] # all records

有时数据框可能不适合屏幕缓冲区,在这种情况下,您可能最好打印一个小子集或将其导出到其他东西,绘图或(再次csv)

G Garcia answered 2019-08-13T15:44:38Z
translate from https://stackoverflow.com:/questions/11361985/output-data-from-all-columns-in-a-dataframe-in-pandas