В пандах DataFrame.iterrows()
возвращает индекс и строку.Индекс - это то, что вы контролируете, и, глядя на ваши примеры данных, у вас нет индекса с плотно упакованными целыми числами, но есть что-то еще.
Попробуйте вместо этого этот код:
def dropNotIn(df):
print(df.shape)
removedlist = []
droplist = []
num_rows = 0
for i, x in df.iterrows():
num_rows += 1
print(num_rows)
print(len(df))
Это считает строки явно, вместо того, чтобы пытаться использовать индекс.Если вы действительно хотите считать строки во время ваших операций, я бы предложил использовать встроенную функцию enumerate
для этого:
for num, (index, row) in enumerate(df.iterrows()):
pass
Однако я подозреваю, что вы, вероятно, не хотите этого делать, потому что когдавы делаете вещи с фреймом данных, вы хотите максимально их векторизовать.