gpt4 book ai didi

python - Pandas的squeeze()函数中可能出现错误

转载 作者:行者123 更新时间:2023-11-30 22:35:25 25 4
gpt4 key购买 nike

我是 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})

DataFrame 对象 df1df2 的内容符合预期:

df1: 
yvals
0 10.0

df2:
yvals
0 10.0
1 20.0

但是,应用squeeze() 方法会为df1df2 提供不同的结果。

df1.squeeze(): 
10.0

f2.squeeze():
0 10.0
1 20.0
Name: yvals, dtype: float64

正如文档所预期的那样,df2.squeeze() 给出了一个包含两行的 Pandas Series 对象,但 df1.squeeze() 给出了一个标量 numpy .float64 而不是一行的 Panda Series 对象。这一定是一个错误,而不是一个功能,因为当没有预先信息时,具有 1 行的系列应该与任何其他系列一样对待。

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

最佳答案

这符合预期。 squeeze 正在消除尺寸为 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

关于python - Pandas的squeeze()函数中可能出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44575776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com