我已将数据框转换为字典,并已将其中一个字典值用于'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 :(得分: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")