Python 函数中可能存在错误

Python 函数中可能存在错误,python,pandas,numpy,Python,Pandas,Numpy,我是Pandas的新用户,一直在使用它分析BLS(劳工统计局)时间序列(从他们的ftp站点下载)。但是我遇到了一个问题,我在下面的Python程序中重现了这个问题: import pandas as pd import numpy as np yvals1 = np.array( [10.] ) yvals2 = np.array( [10., 20.] ) df1 = pd.DataFrame({"yvals": yvals1}) df2 = pd.DataFrame({"yvals":

我是Pandas的新用户,一直在使用它分析BLS(劳工统计局)时间序列(从他们的ftp站点下载)。但是我遇到了一个问题,我在下面的Python程序中重现了这个问题:

import pandas as pd
import numpy  as np

yvals1 = np.array( [10.] )
yvals2 = np.array( [10., 20.] )

df1 = pd.DataFrame({"yvals": yvals1})
df2 = pd.DataFrame({"yvals": yvals2})
数据帧对象
df1
df2
的内容与预期一致:

df1: 
   yvals
0   10.0

df2: 
   yvals
0   10.0
1   20.0
但是,对
df1
df2
应用squence()方法会得到不同的结果

df1.squeeze(): 
10.0

f2.squeeze(): 
0    10.0
1    20.0
Name: yvals, dtype: float64
正如文档中所预期的那样,
df2.squence()
提供了一个具有两行的Panda系列对象,但是
df1.squence()
提供了一个标量
numpy.float64
而不是一个具有一行的Panda系列对象。这必须是一个bug,而不是一个特性,因为当一个系列没有高级信息时,一个系列有一行应该被视为与任何其他系列相同


我正在使用Python 2.7.13和Pandas 0.20.1。提前感谢您的帮助。

这是意料之中的事<代码>挤压是在尺寸为
1

因此,大小为
(2,1)
的数据帧压缩为
(2,)
,大小为
(1,1)
的数据帧压缩为标量

要获得预期结果,请使用
axis=1
参数

df1.squeeze(axis=1)

0    10.0
Name: yvals, dtype: float64

来自工具提示

Signature: df1.squeeze(axis=None)
Docstring:
Squeeze length 1 dimensions.

Parameters
----------
axis : None, integer or string axis name, optional
    The axis to squeeze if 1-sized.

    .. versionadded:: 0.20.0

Returns
-------
scalar if 1-sized, else original object
File:      //anaconda/envs/3.6/lib/python3.6/site-packages/pandas/core/generic.py
Type:      method

谢谢你的快速回复。我应该意识到
squere()
现在有一个
axis
参数。有趣的是,对于单行,默认的
axis=None
给出了一个标量,但是
axis=0
axis=1
都给出了Pandas系列对象。无论如何,再次感谢你;你给了我更多的思考。