Как найти, в какой строке произошел «неподдерживаемый тип операнда (ов) для +: Long Str»? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь отладить свою программу в Python Pandas, когда пытаюсь добавить два столбца String для создания нового столбца.Программа имеет следующую трассировку: «неподдерживаемые типы операндов для -: 'int' и 'str'". После того, как я изменил тип данных на df['ColA']=df.ColA.astype(str), проблема решена.Поэтому я думаю, что может быть одна (или несколько) строк имеют целые числа.Мне нужно выяснить, какая строка вызывает проблему, поскольку здесь несколько миллионов строк.

ID colA    colB
1  apple   USA
2  Banana  Japan
3  Pear    5
4  Peach   China

df['ColA_ColB'] = vre_df['ColA'] + "_" + df['ColB']

ниже исправьте проблему, но мне нужно знать, какая строка вызывает проблему (или нет str)

df['ColA_ColB'] = df['ColA'].astype(str) + "_" + df['ColB'].astype(str)

ищет методы для печати номера строкичто ColB не str.(например, 3)

Чтобы было более понятно, как я могу создать таблицу подмножеств, в которой значение ColB или ColA не является String.например, ID colA colB

3 Pear 5

Дополнительный вопрос, используя существующий набор данных, заключается в том, есть ли быстрый способ добавить знак «» в числовые строки (например, «5) внабор данных?

Ответы [ 3 ]

1 голос
/ 10 июля 2019

applymap может быть не самым быстрым, но это сделает работу следующим образом:

m = df[['colA', 'colB']].applymap(type).ne(str).any(axis=1)
df[m]

Out[472]:
   ID  colA colB
2   3  Pear    5
0 голосов
/ 10 июля 2019

Выражение rows=vre_df['Col_A']!=vre_df['Col_A'].astype(str) равно True, если значение в этой строке не является строкой.Соответственно, vre_df.loc[rows] - это оскорбительные строки.

0 голосов
/ 10 июля 2019

Чтобы узнать, является ли переменная var строкой, просто используйте:

if type(var).__name__ == "str":
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...