我正在寻找在数据框的列中更改字符串的一部分。但是,我无法在数据框中更新它。这是我的代码。
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
答案 0 :(得分:3)
假设所有行都是字符串,并且所有行都至少包含36个字符,则可以使用.str
来获取第36个字符之后的单元格部分。然后,您可以使用+
运算符将新的开头与每个单元格内容的其余部分组合起来:
df.A = '/Datasets/RetinaNetData' + df.A.str[36:]
作为一个一般性提示,像这样的方法可以一次在整个数据帧上运行,比单独循环遍历每一行的效率更高。