【问题标题】:How to fix "wrong number of items passed 5, placement implies 1"如何解决“错误的项目数通过 5,位置暗示 1”
【发布时间】:2019-08-23 15:37:48
【问题描述】:

我正在尝试从一个从 Excel 导入的具有 5 列和多行的数据框制作 6 个单独的图表。我想在图表中添加两条线,它们是数据帧中的点加上和减去数据帧每一列和每一行中每个点的滚动标准偏差。为此,我使用嵌套的 for 循环然后绘制图形,但是,它表示错误的项目数通过放置意味着 1。我不知道如何解决这个问题。

我尝试将数据框转换为列表并附加行。似乎没有任何效果。我知道这很容易做到。

import pandas as pd
import matplotlib.pyplot as plt
excel_file = 'C:/Users/afrydman/Documents/Storage and Data Centers FFO Multiples Data.xlsx'
dfStorage = pd.read_excel(excel_file,sheet_name='Storage Data', index_col='Date')
dfrollingStd = dfStorage.rolling(12).std().shift(-11)
#dfrollingStd.fillna(0)
#print(dfStorage[1][3])
for k,p in dfStorage, dfrollingStd:
    dftemp = pd.DataFrame(dfStorage,columns=[k])
    dfnew=pd.DataFrame(dfrollingStd,columns=[p])
    for i,j in dfStorage, dfrollingStd:
        dftemp = pd.DataFrame(dfStorage,index=[i])
        dfnew=pd.DataFrame(dfrollingStd,index=[j])
        dftemp['-1std'] = pd.DataFrame(dftemp).subtract(dfnew)
        dftemp['+1std'] = pd.DataFrame(dftemp).add(dfnew)
    pd.DataFrame(dftemp).plot()
    plt.ylabel('P/FFO')

我希望输出是 6 个单独的图表,每个图表有 3 条线。相反,我什么也没得到。我的循环也没有正常执行。

【问题讨论】:

  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。我们需要该代码,加上 整个 错误消息:包括回溯。

标签: python python-3.x pandas dataframe plot


【解决方案1】:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
excel_file = 'C:/Users/afrydman/Documents/Storage and Data Centers FFO Multiples Data.xlsx'
dfStorage = pd.read_excel(excel_file,sheet_name='Storage Data', index_col='Date')
dfrollingStd = dfStorage.rolling(12).std().shift(-11)
#dfrollingStd.fillna(0)
#print(dfStorage[1][3])
for i in dfStorage:
    dftemp = pd.DataFrame(dfStorage,columns=[i])
    for j in dfrollingStd:
        dfnew=pd.DataFrame(dfrollingStd,columns=[j])
        dftemp['-1std'] = pd.DataFrame(dftemp).subtract(dfnew)
        dftemp['+1std'] = pd.DataFrame(dftemp).add(dfnew)
    pd.DataFrame(dftemp).plot()
    plt.ylabel('P/FFO')

这是我更新的代码,但我仍然遇到同样的错误。这次是说错误的项目数通过了 2,位置意味着 1

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2019-09-23
    • 2021-11-26
    • 2023-03-24
    • 2019-02-25
    • 2016-02-14
    • 2020-07-02
    • 2021-12-12
    • 2021-07-13
    相关资源
    最近更新 更多