DataFrame не может быть повторен: получая следующую ошибку: индексы кортежа должны быть целыми числами или слайсами, а не str - PullRequest
0 голосов
/ 14 января 2019

Последние 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

Ответы [ 2 ]

0 голосов
/ 14 января 2019

iterrow возвращает tuple. Если вам нужен доступ к индексу нужного столбца, вы можете сделать это с помощью:

for row in df2.iterrows():
    if (row[1][df.columns.get_loc('nonTrivial') == True):
        n = n+1

Просто комментарий, вам не нужно зацикливать строки. Вы можете просто сделать:

n += (df2['nonTrivial']==True).sum()
0 голосов
/ 14 января 2019

Попробуйте:

for row in df2.iterrows():
   if (row[1]["nonTrivial"]==True):
         n = n+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...