【问题标题】:Why am i getting " NameError: name 'df2' is not defined" error?为什么我收到“NameError: name 'df2' is not defined”错误?
【发布时间】:2021-09-08 22:13:39
【问题描述】:

您好,我分离了一个大的 24 小时 DataFrame,因为每个小时包含超过 500 个三列的数据,我想像这样并排合并小时数据:

实际上它们都来自同一个数据框,但我分开了。这是我的代码:

...
grouped = dataframeone.groupby(dataframeone.Hour)
df_list = [df1,df2,df3,df4,df5,df6,df7,df8,df9,df10,df11,df12,df13,df14,df15,df16,df17,df18,df19,df20,df21,df22,df23,df24,df25]
df_list[0] = grouped.get_group(0)
df_list[0] = df_list[0].drop(columns=['Hour'])


for j in range (1,24): 
        df_list[j] = grouped.get_group(j)  
        df_list[j]= df_list[j].drop(columns=['Hour'])
        df= pd.concat([df_list[j-1],df_list[j]], axis=1)
        print(df)

但我收到此错误:

NameError                                 Traceback (most recent call last)
<ipython-input-47-ff832fd92e63> in <module>
    
     24 grouped = dataframeone.groupby(dataframeone.Hour)
---> 25 df_list = [df1,df2,df3,df4,df5,df6,df7,df8,df9,df10,df11,df12,df13,df14,df15,df16,df17,df18,df19,df20,df21,df22,df23,df24,df25]
     26 df_list[0] = grouped.get_group(0)
     27 df_list[0] = df_list[0].drop(columns=['Hour'])

NameError: name 'df2' is not defined

我不明白错误来自哪里以及为什么......请告诉我。我该如何解决?我应该使用其他方式吗?

【问题讨论】:

  • 显然df2 实际上并不存在。你是如何创建它的?
  • 在 for 循环中像这样:当循环开始 df_list 时,循环以 `df_list[j] => df_list[1] => df2 = grouped.get_group(1) ...` 开始[j] 取值为 df2 并在此部分创建。
  • 将您的创建代码放入您的问题中。
  • 告诉我们你是如何创建它的,它似乎不存在于你分享的代码中
  • 正如您收到的错误消息清楚地表明,第 25 行产生了错误,即:df_list = [df1,df2,df3,df4,df5,df6,df7,df8,df9,df10,df11,df12,df13,df14,df15,df16,df17,df18,df19,df20,df21,df22,df23,df24,df25]。但是,您尚未提供代码部分,其中 df1 - df25 已创建。因此,我们无法判断 df2 有什么问题。

标签: python pandas dataframe jupyter-notebook


【解决方案1】:

你得到这个是因为你没有在任何地方创建 df2。你可以这样做:

...
grouped = dataframeone.groupby(dataframeone.Hour)
df_list = ['df'+str(i) for i in range(1,26)]
df_list[0] = grouped.get_group(0)
df_list[0] = df_list[0].drop(columns=['Hour'])


for j in range (1,24): 
        df_list[j] = grouped.get_group(j)  
        df_list[j]= df_list[j].drop(columns=['Hour'])
        df= pd.concat([df_list[j-1],df_list[j]], axis=1)
        print(df)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多