Я хотел бы заменить все «0–4» на «00–04» в столбце «размер опухоли» в моем DataFrame. В колонке у меня следующее.

print(df['tumor-size'].unique())
["'15-19'" "'35-39'" "'30-34'" "'25-29'" "'40-44'" "'10-14'" "'0-4'" "'20-24'" "'45-49'" "'50-54'" "'5-9'"]

То, что я пробовал на 1-м месте, и ничего не изменилось, следующее.

df['tumor-size'] = df['tumor-size'].replace('0-4', '00-04')

Далее я попробовал следующее. В этом случае все «0–4» были заменены на «00–40», однако все «40–44» были заменены на «400–044», поскольку «40–44» содержали «0–4».

df['tumor-size'] = df['tumor-size'].str.replace('0-4', '00-04')

Я прочитал другие QA и заметил, что мне нужно регулярное выражение. Затем я попробовал следовать, так как элементы всегда начинаются с «0-4», но снова ничего не изменилось.

df['tumor-size'] = df['tumor-size'].str.replace(r'^0-4', '00-04', regex=True)

То, что я хочу сделать, довольно просто, но я понятия не имею, как это реализовать. Пожалуйста, помогите мне. Спасибо,

Примечание: я перезагружаю все данные в df из файла csv при каждой попытке.

1
Ihmon 10 Окт 2021 в 10:31

2 ответа

Лучший ответ

Пытаться:

df['tumor-size'] = df['tumor-size'].replace("^'0-4'$", "'00-04'")
1
U12-Forward 10 Окт 2021 в 07:51

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

df = pd.DataFrame(data={'tumor-size': ['15-19', '35-39', '30-34', '25-29',
                                       '40-44', '10-14', '0-4', '20-24',
                                       '45-49', '50-54', '5-9']})
df['tumor-size'] = df['tumor-size'].str.replace(r'^0-4$', '00-04', regex=True)

Выход:

   tumor-size
0       15-19
1       35-39
2       30-34
3       25-29
4       40-44
5       10-14
6       00-04
7       20-24
8       45-49
9       50-54
10        5-9
0
Muhammad Hassan 10 Окт 2021 в 08:13