过去30分钟,我一直在尝试调试代码,但无济于事,也许您可以提供帮助?
错误在于第17行,但我真的不知道为什么会这样。
因此,我正在使用字典来存储函数is_nontrivial_reverse_number()
返回的数据,该数据是boolean
类型。我对其进行迭代,并将所有值从0
插入到1100
。
然后,我将字典插入具有DataFrame
库的pandas
中。
然后,我遍历dataFrame以检索设置为true的值的计数。
但是问题是,即使我在不同的字典和数据框集上使用了相同的功能,row["nonTrivial"]
似乎也不起作用。
import pandas as pd2
dic2 = {'nonTrivial': [is_nontrivial_reverse_number(x) for x in range(0, 1100)]}
dic2
df2 = pd2.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
答案 0 :(得分:1)
iterrow
返回一个tuple
。如果您需要访问所需列的索引,可以使用以下方法进行操作:
for row in df2.iterrows():
if (row[1][df.columns.get_loc('nonTrivial') == True):
n = n+1
仅需注释,就无需循环行。您可以这样做:
n += (df2['nonTrivial']==True).sum()
答案 1 :(得分:0)
尝试:
for row in df2.iterrows():
if (row[1]["nonTrivial"]==True):
n = n+1
答案 2 :(得分:0)
为什么没有人提到他可以像在 for 循环中解压元组
for index, row in df2.iterrows():
if (row["nonTrivial"]==True):
n = n+1
print (n)