更改DataFrame中的列

时间:2018-09-28 15:26:14

标签: python pandas

我正在寻找在数据框的列中更改字符串的一部分。但是,我无法在数据框中更新它。这是我的代码。

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 :(得分:3)

假设所有行都是字符串,并且所有行都至少包含36个字符,则可以使用.str来获取第36个字符之后的单元格部分。然后,您可以使用+运算符将新的开头与每个单元格内容的其余部分组合起来:

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

作为一个一般性提示,像这样的方法可以一次在整个数据帧上运行,比单独循环遍历每一行的效率更高。