У меня есть pandas DataFrame с двумя столбцами, один с целыми числами (1-23) и строками (X или Y) и один с номерами. Я хочу сравнить, если значения равны. Я пробовал среди других:
np.where(np.equal(item from column a, item from column b), 1, 0)
Но это не работает, потому что там есть строки. Я также не могу превратить все значения в целые числа из-за X и Y. Любые советы?
Панды подходят для сравнения типов. Вы можете использовать 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
that needs to run if the values are equal
. Это требует тщательного определения. Вы имеете в виду, если все значения равны, любое из значений равно, или вы хотите напечатать какое-то значение для каждой строки ?