使用Excel Pandas中的浮点值填充字典时出现问题

我正在使用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字符串转换为float。


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


汪汪一只猫
浏览 208回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python