【问题标题】:maximum recursion depth exceeded while calling a Python object -runtime error调用 Python 对象时超出最大递归深度 - 运行时错误
【发布时间】:2016-11-11 19:49:40
【问题描述】:
import pandas as pd
import xlsxwriter
import openpyxl as px
import numpy as np
from xlwt import Workbook
from os.path import expanduser

home = expanduser("~")

def read_survey():  
    df_appliance=pd.read_csv('C:/Users/nidi/Desktop/New folder/app_info.csv')
    df_appliance.fillna(0, inplace=True)
    return df_appliance

df_appliance=read_survey()

def map_appliance_info(df_appliance):

    oven_usage=[]
    #oven_type_radio=[]
    oven_type_micro=[]
    oven_type_oven=[]
    tube_light_count=[]
    led_count=[]
    incand_count=[]
    cfl_count=[]

    for i in range(len(df_appliance['sur_key'].values)):                   

        if df_appliance['oven-type'].values[i]=='radio':
            #oven_type_radio.append(1)
            oven_type_micro.append(0)
            oven_type_oven.append(0)
        elif df_appliance['oven-type'].values[i]=='micro':
            #oven_type_radio.append(0)
            oven_type_micro.append(1)
            oven_type_oven.append(0)
        elif df_appliance['oven-type'].values[i]=='oven':
            #oven_type_radio.append(0)
            oven_type_micro.append(0)
            oven_type_oven.append(1)
        else:
            #oven_type_radio.append(0)
            oven_type_micro.append(0)
            oven_type_oven.append(0)

        if df_appliance['oven-ousg'].values[i]=='little':
            oven_usage.append(1)
        elif df_appliance['oven-ousg'].values[i]=='defrost':
            oven_usage.append(5)
        elif df_appliance['oven-ousg'].values[i]=='mod':
            oven_usage.append(12)
        elif df_appliance['oven-ousg'].values[i]=='ext':
            oven_usage.append(30)
        else:
            oven_usage.append(0)

        #return df_appliance_mapped

        df_appliance_mapped = map_appliance_info(df_appliance)

result=np.array(df_appliance_mapped)

这是我的代码。打印 map_appliance_info(df_appliance) 时出现错误-

文件“E:/iisc/code/try.py”,第 69 行,在 map_appliance_info 中 df_appliance_mapped = map_appliance_info(df_appliance)

文件“E:/iisc/code/try.py”,第 35 行,在 map_appliance_info 中 for i in range(len(df_appliance['sur_key'].values)):

文件“C:\Users\nidi\Anaconda2\lib\site-packages\pandas\core\frame.py”,第 1957 行,在 getitem 中 indexer = convert_to_index_sliceable(self, key)

文件“C:\Users\nidi\Anaconda2\lib\site-packages\pandas\core\indexing.py”,第 1658 行,在 convert_to_index_sliceable elif isinstance(key, compat.string_types):

RuntimeError: 调用 Python 对象时超出最大递归深度

谁能帮忙。谢谢

【问题讨论】:

    标签: python arrays excel numpy pandas


    【解决方案1】:

    既然你打电话给pd.read_excel,你必须安装Pandas。 因此,合并数据的最简单方法是在两个 DataFrame 上调用 pd.merge

    import pandas as pd
    
    df1 = pd.DataFrame({0: [1, 1, 0, 0], 1: [0, 0, 1, 1], 2: [1, 2, 1, 5], 3: [1, 2, 3, 4]})
    df2 = pd.DataFrame({0: [0, 1, 1, 0], 1: [1, 0, 0, 1], 2: [1, 2, 1, 5]})
    result = pd.merge(df2, df1, on=[0,1,2])
    print(result.values)
    

    打印

    [[0 1 1 3]
     [1 0 2 2]
     [1 0 1 1]
     [0 1 5 4]]
    

    如果df_appliance_mapped 是第二个DataFrame,你可以使用:

    first_df = pd.read_excel('E:/iisc/code/energy_usage_appliance.xlsx',0,header=None)
    result = pd.merge(df_appliance_mapped, first_df, on=[0,1,2])
    

    【讨论】:

    • 但它会因为文件的 len 不同而起作用。如果列匹配,我必须附加第 4 列。
    • 它向我显示了一个错误-AttributeError: 'numpy.ndarray' object has no attribute '_values'
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 2020-06-25
    • 2019-04-27
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多