【问题标题】:AttributeError:' 'numpy.ndarray' object has no attribute 'rolling' ' arises only after filtering the CSV dataAttributeError: ''numpy.ndarray' object has no attribute 'rolling'' 仅在过滤 CSV 数据后出现
【发布时间】:2021-02-24 05:10:13
【问题描述】:

如果我按照下面给出的方式传递 csv 数据的值,它会产生输出。

data = pd.read_csv("abc.csv")
avg = data['A'].rolling(3).mean() 
print(avg)

但是如果按照下面给出的方式传递值会产生错误。

dff=[]
dff1=[]
dff1=abs(data['A'])

b, a = scipy.signal.butter(2, 0.05, 'highpass')
dff = scipy.signal.filtfilt(b, a, dff1) 

avg = dff.rolling(3).mean() 
print(avg)

错误是:

AttributeError: 'numpy.ndarray' 对象没有属性 'rolling'

想不通,代码有什么问题?

应用dff = pd.Dataframe(dff)new 后出现问题。顶部显示一个意外的零。

这背后的原因是什么?如何解决这个问题?

【问题讨论】:

    标签: python csv filter mean


    【解决方案1】:

    rolling 是 Pandas SeriesDataFrames 上的一个函数。 Scipy 对这些一无所知,并生成 Numpy ndarrays 作为输出。它可以接受数据帧和系列作为输入,因为 Pandas 类型可以在需要时模仿 ndarray。

    解决方案可能就像使用将 ndarray 重新包装为数据框一样简单

    dff = pd.Dataframe(dff)
    

    【讨论】:

    • 应用 dff = pd.Dataframe(dff) 后,我之前的问题已经消失,但出现了新问题。数组顶部显示一个未扩展的零。这背后的原因是什么?你能告诉我如何摆脱这个问题吗?我已附加输出。
    • 那个零是列名。您可以使用dff = pd.DataFrame(dff, columns=['A']) 将其命名为A。查看文档了解详细信息:pandas.pydata.org/docs/reference/api/pandas.DataFrame.html
    • 好的。非常感谢。
    猜你喜欢
    • 2022-12-19
    • 2022-12-01
    • 2021-05-16
    • 2023-02-18
    • 2021-07-25
    • 2015-09-26
    • 2020-04-26
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多