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对象时超出了最大递归深度
任何人都可以提供帮助。感谢
答案 0 :(得分:0)
由于您正在调用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])