Pandas dataframe пытается получить целое число в dataframe

1

У меня есть каркас панд, который выглядит следующим образом:

    s = index_df[(index_df['id2'].values  == result[z][3])]
    print s.iloc[:, [0]]

что даст мне результат

      id1
36  14559

Я пытаюсь сохранить значение 14559 в переменной со следующим:

value = s.iloc[:, [0]]

Но он продолжает давать мне ошибку:

ValueError: Incompatible indexer with DataFrame

Любая идея, как я мог это решить?

EDIT:

Мой dataframe объявлен следующим образом:

результат:

result=[(fuzz.WRatio(n, n2),n2,sdf.index[x],bdf.index[y])
        for y, n2 in enumerate(Col2['CSGNE_NAME']) if fuzz.WRatio(n, n2)>80 and len(n2) >= 2
       ]

И вот как я объявляю и добавляю к файлу данных:

index_df = pd.DataFrame(columns=['id1','id2', 'score'])
index_df = index_df.append({'id1':result[z][2], 'id2':result[z][3], 'score':result[z][0]}, ignore_index=True)   
Теги:
pandas
dataframe
df

1 ответ

1

Я считаю, что нужно:

s.iloc[:, 0]

Или же:

s.iloc[0, 0]

Или преобразуйте значения в список и используйте next для первого значения extract:

L = index_df[(index_df['id2'].values  == result[z][3])].values.tolist()

#use parameter if not matched condition and returned empty val
out = next(iter(L), 'no matched value')

Образец:

index_df = pd.DataFrame({'id2':[1,2,3,2],
                         'id1':[10,20,30,40]})
print (index_df)
   id2  id1
0    1   10
1    2   20
2    3   30
3    2   40

#if possible specify column name with .loc ('id1')
L = index_df.loc[index_df['id2'].values == 2, 'id1']
#use parameter if not matched condition and returned empty val
#out = next(iter(L), 'no matched value')
print (out)
20
  • 0
    Если я использую ваш код, я сразу же сталкиваюсь с StopIteration без какого-либо вывода
  • 0
    Да, проблема с пустым значением, используйте второе. Я редактирую ответ для этого сейчас.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню