从数据框字典中取值

问题描述:

我已经将一个数据框转换为一个字典,并且在'for'函数中使用了其中一个字典值,但是它给了我以下错误?从数据框字典中取值

df = 
Metal       Medium Carbon Steel 
Max Compressive Stress/MPa     305 
Cost per m^3/$        4301 
I/mm^4        3.27869e+07 
inner_radius_quarted     5.82544e+07 
inner_radius/mm       87.3639 
thickness/mm        12.6361 
volume/mm^3        12636.1 
cost/$         0.0543477 

a1 = df.to_dict() 

P = [P -1,P +1] 

for i in P: 
    x = (i * L * y)/(a1[1][u'I/mm^4'] * 4) 
if x > a1[1][u'Max Compressive Stress/MPa']: 
    print "A point load of", i, ", will break the beam" 
else: 
    print "A point load of", i, ", will not break the beam" 



KeyError         Traceback (most recent call last) 
<ipython-input-255-8d9325dc6d75> in <module>() 
     2 
     3 for i in P: 
----> 4  x = (i * L * y)/(a1[1][u'I/mm^4'] * 4) 
     5  if x > a1[1][u'Max Compressive Stress/MPa']: 
     6   print "A point load of", i, ", will break the beam" 

KeyError: 1 
+0

究竟'P = [P-1,P + 1]'呢? –

+0

它采用一个先前定义的P值,并列出P + 1和P-1 –

你看过a1。它并没有接近你所需要的。

{'Medium Carbon Steel': {'Cost per m^3/$': 4301.0, 
    'I/mm^4': 32786900.0, 
    'Max Compressive Stress/MPa': 305.0, 
    'cost/$': 0.054347699999999999, 
    'inner_radius/mm': 87.363900000000001, 
    'inner_radius_quarted': 58254400.0, 
    'thickness/mm': 12.636100000000001, 
    'volume/mm^3': 12636.1}} 

尝试

a1 = df['Medium Carbon Steel'].to_dict() 

P = [P -1,P +1] 

for i in P: 
    x = (i * L * y)/(a1['I/mm^4'] * 4) 
if x > a1['Max Compressive Stress/MPa']: 
    print("A point load of", i, ", will break the beam") 
else: 
    print("A point load of", i, ", will not break the beam")