Изменяет значение строки csv

#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) ?