Я использую электронную таблицу Excel для заполнения словаря. Затем я использую эти значения для умножения значений другого фрейма данных по ссылке, но при попытке выдает ошибки. Я решил сделать таблицу Excel из своего словаря, чтобы избежать ошибок, но у меня ничего не получилось. Я делаю это, потому что словарь в конце концов становится длинным и слишком утомительно редактировать ключи и его значения. Я использую Python 2.7
import pandas as pd
#READ EXCEL FILE
df = pd.read_excel("C:/Users/Pedro/Desktop/dataframe.xls")
#Store the keys with its value in a dictionary. This will become df2
d = {"M1-4":0.60,"M1-5/R10":0.85,"C5-3":0.85,"M1-5/R7-3":0.85,"M1-4/R7A":0.85,"R7A":0.85,"M1-4/R6A":0.85,"M1-4/R6B":0.85,"R6A":0.85,"PARK":0.20,"M1-6/R10":0.85,"R6B":0.85,"R9":0.85,"M1-5/R9":0.85}
#Convert the dictionary to an Excel spreadsheet
df5 = pd.DataFrame.from_dict(d, orient='index')
df5.to_excel('bob_dict.xlsx')
#populatethe dictionary from the excel spreadsheet
df2 = pd.read_excel("C:/Users/Pedro/Desktop/bob_dict.xlsx")
#Convert dtframe back to a dictionary
dictionary = df2.to_dict(orient='dict')
#Pass the dictionary as reference
b = df.filter(like ='Value').values
c = df.filter(like ='ZONE').replace(dictionary).astype(float).values
df['pro_cum'] = ((c * b).sum(axis =1))
При запуске я получаю ValueError: не удалось преобразовать строку R6B в число с плавающей точкой.
c = df.filter(like ='ZONE').replace(d).astype(float).values
но если я заменю значения зоны исходным словарем, он будет работать без ошибок.
Ввод: df
HP ZONE Value ZONE1 Value1
3 R7A 0.7009 M1-4/R6B 0.00128
2 R6A 0.5842 M1-4/R7A 0.00009
7 M1-6/R10 0.1909 M1-4/R6A 0.73576
9 R6B 0.6919 PARK 0.03459
6 PARK 1.0400 M1-4/R6A 0.33002
9.3 M1-4/R6A 0.7878 PARK 0.59700
10.6 M1-4/R6B 0.0291 R6A 0.29621
11.9 R9 0.0084 M1-4 0.00058
13.2 M1-5/R10 0.0049 M1-4 0.65568
14.5 M1-4/R7A 0.0050 C5-3 0.00096
15.8 M1-5/R7-3 0.0189 C5-3 1.59327
17.1 M1-5/R9 0.3296 M1-4/R6B 0.43918
18.4 C5-3 0.5126 R6B 0.20835
19.7 M1-4 0.5126 PARK 0.22404