Как сравнить столбцы со строками и целыми числами? Питон Панды

1

У меня есть pandas DataFrame с двумя столбцами, один с целыми числами (1-23) и строками (X или Y) и один с номерами. Я хочу сравнить, если значения равны. Я пробовал среди других:

np.where(np.equal(item from column a, item from column b), 1, 0)

Но это не работает, потому что там есть строки. Я также не могу превратить все значения в целые числа из-за X и Y. Любые советы?

  • 0
    приведите пример кода того, как выглядит ваш фрейм данных, или напечатайте (df.head ()) или что-то в этом роде.
Теги:
string
pandas
integer

1 ответ

0
Лучший ответ

Панды подходят для сравнения типов. Вы можете использовать pd.Series.__eq__ как при регулярном сравнении двух серий одного и того же типа.

df = pd.DataFrame({'col1': [1, 2, 'hello', 4.5, 'text', 6, 7, 'errr', 9, 'test'],
                   'col2': range(1, 11)})

df['compare'] = (df['col1'] == df['col2']).astype(int)

print(df)

    col1  col2  compare
0      1     1        1
1      2     2        1
2  hello     3        0
3    4.5     4        0
4   text     5        0
5      6     6        1
6      7     7        1
7   errr     8        0
8      9     9        1
9   test    10        0
  • 0
    Это работает и очень понятно, спасибо! В моем случае у меня есть оператор if, который должен выполняться, если значения равны, например: if (df ['col1'] == df ['col2']). Astype (int): print ('эти значения равный '). Это дает мне attributeErrow: AttributeError: объект 'bool' не имеет атрибута 'astype'. У тебя есть идеи почему?
  • 0
    that needs to run if the values are equal . Это требует тщательного определения. Вы имеете в виду, если все значения равны, любое из значений равно, или вы хотите напечатать какое-то значение для каждой строки ?
Показать ещё 2 комментария

Ещё вопросы

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