Изменение столбца в DataFrame - PullRequest
       0

Изменение столбца в DataFrame

0 голосов
/ 28 сентября 2018

Я хочу изменить часть строки в столбце фрейма данных.Я, однако, не могу заставить его обновить данные во фрейме.Это мой код

import pandas as pd

#File path
csv = '/home/test.csv'

#Read csv to pandas
df = pd.read_csv(nuclei_annotations_csv, header=None, names=['A', 'B', 'C', 'D', 'E', 'F'])

#Select Data to update
paths = df['A']

#Loop over data
for x in paths:
    #Select data to updte
    old = x[:36]
    #Update value
    new = '/Datasets/RetinaNetData'
    #Replace
    new_path = x.replace(old, new)
    #Save values to DataFrame
    paths.update(new_path)

#Print updated DataFrame 
print(df)

Мне нужны следующие входы и выходы:

Вход:

/Annotations/test_folder/10_m03293_ORG.png
/Annotations/test_folder/10_m03293_ORG.png
/Annotations/test_folder/10_m03293_ORG.png
/Annotations/test_folder/10_m03293_ORG.png

Выход:

/Datasets/RetinaNetData/10_m03293_ORG.png
/Datasets/RetinaNetData/10_m03293_ORG.png
/Datasets/RetinaNetData/10_m03293_ORG.png
/Datasets/RetinaNetData/10_m03293_ORG.png

1 Ответ

0 голосов
/ 28 сентября 2018

Предполагая, что все строки являются строками и все они содержат не менее 36 символов, вы можете использовать .str, чтобы получить часть ячеек после 36-го символа.Затем вы можете просто использовать оператор +, чтобы объединить новое начало с остатком содержимого каждой ячейки:

df.A = '/Datasets/RetinaNetData' + df.A.str[36:]

В качестве общего совета, такие методы, которые работают сразу на всем фрейме данных, собираютсябыть более эффективным, чем циклически проходить по каждой строке в отдельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...