Замена положительных (+) и отрицательных (-) знаков на целые числа в python - PullRequest
0 голосов
/ 23 мая 2018

У меня есть кадр данных со следующим столбцом:

A
+
+
-
+
-

Как преобразовать этот столбец в целочисленные значения.Чтобы я мог умножить его на другие числовые значения?

Поэтому все '+' будут заменены на 1, а '-' на -1.

Ответы [ 5 ]

0 голосов
/ 23 мая 2018

searchsorted

df.assign(A=1 - np.array(['+']).searchsorted(df.A) * 2)

   A
0  1
1  1
2 -1
3  1
4 -1

Краткое

df.assign(A=df.A.eq('-').mul(2).rsub(1))

   A
0  1
1  1
2 -1
3  1
4 -1
0 голосов
/ 23 мая 2018

Некоторые возможные способы могут использовать add для добавления строки 1 и преобразования в int с помощью astype:

df['A'] = df.A.add('1').astype(int)

или использовать lambda для той же цели, что и выше:

df['A'] = df.A.apply(lambda row: int(row + '1'))
0 голосов
/ 23 мая 2018

Вы можете использовать:

df.A = df.A.map({'+': 1, '-': -1})
0 голосов
/ 23 мая 2018

с использованием apply:

предполагает, что только значения + и - находятся в столбце

df['A'] = df.A.apply(lambda x: 1 if x == '+' else -1)

с использованием конкатенации и приведения строк:

df['A'] = (df.A + '1').astype(int)

с использованием равенства строк и приведения:

df['A'] = (df.A == '+').astype(int)*2-1
0 голосов
/ 23 мая 2018

Если я правильно понимаю, вы можете просто использовать replace:

>>> df
   A
0  +
1  +
2  -
3  +
4  -

new_df = df.replace({'A':{'+':1, '-':-1}})

>>> new_df
   A
0  1
1  1
2 -1
3  1
4 -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...