Как заменить целочисленные значения в пандах в питоне? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть pandas dataframe следующим образом.

   a  b  c  d  e
a  0  1  0  1  1
b  1  0  1  6  3
c  0  1  0  1  2
d  5  1  1  0  8
e  1  3  2  8  0

Я хочу заменить значения ниже 6 <=5 на 0. Поэтому мой вывод должен быть следующим:

   a  b  c  d  e
a  0  0  0  0  0
b  0  0  0  6  0
c  0  0  0  0  0
d  0  0  0  0  8
e  0  0  0  8  0

Я пытался сделать это, используя следующий код.

df['a'].replace([1, 2, 3, 4, 5], 0)
df['b'].replace([1, 2, 3, 4, 5], 0)
df['c'].replace([1, 2, 3, 4, 5], 0)
df['d'].replace([1, 2, 3, 4, 5], 0)
df['e'].replace([1, 2, 3, 4, 5], 0)

Однако я уверен, что есть более простой способ выполнить эту задачу в пандах.

Я счастливпредоставить более подробную информацию, если это необходимо.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Для производительности рекомендую np.where.Вы можете назначить массив обратно на место с помощью нарезанного назначения (df[:] = ...).

df[:] = np.where(df < 6, 0, df)
df

   a  b  c  d  e
a  0  0  0  0  0
b  0  0  0  6  0
c  0  0  0  0  0
d  0  0  0  0  8
e  0  0  0  8  0

Другой вариант включает fillna:

df[df>=6].fillna(0, downcast='infer')

   a  b  c  d  e
a  0  0  0  0  0
b  0  0  0  6  0
c  0  0  0  0  0
d  0  0  0  0  8
e  0  0  0  8  0
0 голосов
/ 19 февраля 2019

Использование mask

df=df.mask(df<=5,0)
df
Out[380]: 
   a  b  c  d  e
a  0  0  0  0  0
b  0  0  0  6  0
c  0  0  0  0  0
d  0  0  0  0  8
e  0  0  0  8  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...