Замените указанное c слово значением из другого столбца. - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть следующий фрейм данных:

enter image description here

Я пытаюсь добавить vlaue из Col_1 после слова «Черновик» .

В основном мне нужен следующий вывод:

enter image description here

Для этого я пытаюсь с помощью следующего кода:

df['Col_3'] = df['Col_2'].str.replace(r'Draft', ' Draft' + df['Col_1'].astype(str), regex=True)

Но это дает мне следующую ошибку:

 raise TypeError("repl must be a string or callable")
TypeError: repl must be a string or callable

Как я могу это сделать?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 27 февраля 2020
df['Col3'] = df.apply(lambda x: x['Col2'].replace("Draft", "Draft {}".format(x['Col1'])), axis=1)

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

df = pd.DataFrame(
    {
        "val": ["AAA", "BBB"],
        "str": [
            "Draft I promise not to use pictures in my next question",
            "Draft jk ill most likely post more pics"]})


df["output"] = df[["str", "val"]].apply(
    lambda x: x["str"].replace("Draft", f"Draft {x['val']} "), axis=1
)

print(df['output'])

0    Draft AAA  I promise not to use pictures in my...
1         Draft BBB  jk ill most likely post more pics
Name: output, dtype: object
0 голосов
/ 27 февраля 2020

Вы можете попробовать это:

df['Col_3'] = 'Draft ' + df['Col_1'] + df['Col_2'].str.replace('Draft', '')
0 голосов
/ 27 февраля 2020

Я думаю, вам нужно это:

df['Col2'] = df['Col2'].str[:5] + " " + df['Col1'] + " " + df['Col2'].str[5:]

или используйте [str.slice][1]

df['Col2'] = df['Col2'].str.slice(0, 5) + " " + df['Col1'] + " " + df['Col2'].str.slice(5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...