#python-3.x #pandas #csv
Вопрос:
Это мой код:
import pandas as pd
import re
# reading the csv file
patients = pd.read_csv("partial.csv")
# updating the column value/data
for patient in patients.iterrows():
cip=patient['VALOR_ID']
new_cip = re.sub('^(w |)',r'FIXED_REPLACED_STRING',cip)
patient['VALOR_ID'] = new_cip
# writing into the file
df.to_csv("partial-writer.csv", index=False)
print(df)
Я получаю это сообщение:
Обратная связь (последний последний вызов): Файл «/home/jeusdi/projects/workarea/salut/load-testing/load.py», строка 28, в cip=patient[‘VALOR_ID’] Ошибка типа: индексы кортежей должны быть целыми числами или срезами, а не строками
ОТРЕДАКТИРУЙТЕ код формы выше, вы можете подумать, что мне нужно установить одинаковое фиксированное значение для всех строк.
Мне нужно перебрать «строки», сгенерировать случайную строку и установить ее в каждой отдельной «строке».
Код выше был бы:
for patient in patients.iterrows():
new_cip = generate_cip()
patient['VALOR_ID'] = new_cip
Комментарии:
1. Можете ли вы добавить образец данных к вопросу?
Ответ №1:
Используйте Series.str.replace
, но не уверены |
в регулярном выражении. Может быть, его следует удалить:
df = pd.read_csv("partial.csv")
df['VALOR_ID'] = df['VALOR_ID'].str.replace('^(w |)',r'FIXED_REPLACED_STRING')
#if function return scalars
df['VALOR_ID'] = df['VALOR_ID'].apply(generate_cip)
df.to_csv("partial-writer.csv", index=False)
Комментарии:
1. Вы можете пропустить цикл и заменить весь столбец одной строкой в Pandas?
2. @ZachYoung — точно. Это была причина добавить первую и последнюю строку кода из Q.
3. Мне нужно сгенерировать случайную строку для замены. Я имею в виду, что мне нужно, чтобы каждое «значение ячейки» имело другое значение после «преобразования». Не могли бы вы предоставить способ перебора «строк»? Я редактирую пост для получения более подробной информации. Я буду очень признателен вам за помощь.
4. @Jordi — Ты можешь попробовать
df['VALOR_ID'] = df['VALOR_ID'].apply(generate_cip)
?