Замена строки той же строкой и случайным суффиксом - PullRequest
0 голосов
/ 02 октября 2019

У меня есть кадр данных, который выглядит примерно так:

import pandas as pd
import random

d={'ID':["x1", "x2", "x1"],
'CUSIP':['a', 'b', "#NULL"],
'ISIN':["#NULL", "#NULL", 'I']}

df=pd.DataFrame(data=d)
df

Я хочу заменить "#NULL" суффиксом, который имеет суффикс случайного числа. Что-то вроде: "# NULL_xyz", где _xyz - это случайное число для каждого "#NULL"

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Вы можете сделать:

df = df.applymap(lambda val: val + ("_" + str(random.randint(0, 1000)) if val == '#NULL' else ''))

и заменить диапазон (0, 1000) на любой случайный диапазон, который вы хотите.

Чтобы использовать следующие числа, вы можете использовать генератор:

def myGen():
    for i in range(-1, 1000):
        yield(i)
df = df.applymap(lambda val: val + ("_" + str(next(a)) if val == '#NULL' else ''))
0 голосов
/ 02 октября 2019

pandas.Series.str.replace можно использовать callable для замены:

import random

for c in df:
    df[c] = df[c].str.replace('(#NULL)', lambda x: '{}_{}'.format(x.group(0), random.randint(0, 10)))
print(df)

Вывод:

      CUSIP  ID     ISIN
0         a  x1  #NULL_8
1         b  x2  #NULL_5
2  #NULL_10  x1        I
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...