我已经花了30分钟试图调试我的代码,但没有成功,也许你能帮我一下?
错误出现在第17行,但我完全不知道为什么会发生这种情况。
所以,我使用了一个字典来存储我的函数is_nontrivial_reverse_number()
返回的数据,该函数返回的是boolean
类型。我遍历它并插入从0
到1100
的所有值。
然后我将我的字典插入到一个使用pandas
库的DataFrame
中。
接着我遍历我的DataFrame以获取设置为true的值的计数。
但问题是row["nonTrivial"]
似乎不起作用,尽管我在不同的字典和DataFrame集合上使用了相同的函数。
import pandas as pd
dic2 = {'nonTrivial': [is_nontrivial_reverse_number(x) for x in range(0, 1100)]}
df2 = pd.DataFrame(dic2)
df2 = df2.set_index('nonTrivial')
#df2.head()
##df2.shape
#df.dtypes
for row in df2.iterrows():
if (row["nonTrivial"]==True):
n = n+1
print (n)
预期结果:n=2
我得到的结果:
TypeError Traceback (most recent call last)
<ipython-input-314-ce7c400929e6> in <module>
15
16 for row in df2.iterrows():
---> 17 if (row["nonTrivial"]==True):
18 n = n+1
19 print (n)
TypeError: tuple indices must be integers or slices, not str
回答:
iterrow
返回一个tuple
。如果你需要访问你想要的列的索引,你可以这样做:
for row in df2.iterrows():
if (row[1][df2.columns.get_loc('nonTrivial')] == True):
n = n+1
顺便提一下,你不需要循环行。你可以直接这样做:
n += (df2['nonTrivial']==True).sum()