У меня есть файл данных pandas с именем merge
, который выглядит следующим образом:
filepath timestamp label_x label_y X Y W H
S6/N11/N11_R1/S6_N11_R1_IMAG0274 ----- empty NaN NaN NaN NaN NaN
S6/N11/N11_R1/S6_N11_R1_IMAG0275 ----- empty NaN NaN NaN NaN NaN
S6/N11/N11_R1/S6_N11_R1_IMAG0276 ----- empty NaN NaN NaN NaN NaN
S6/N11/N11_R1/S6_N11_R1_IMAG0277 ----- empty NaN NaN NaN NaN NaN
Некоторые временные метки отсутствуют, я хотел бы получить метки времени из метаданных изображения (местоположение указано в столбце filepath
). Как видите, filepath содержит папки, начинающиеся с имени S6
. Эти папки должны быть от S1
до S6
, но в настоящее время я только папки S1
и S2
. Я хотел бы нарезать эти папки и выполнять преобразования:
import PIL.Image
def transformation(row):
try:
img=PIL.Image.open(path0/row["filepath"])
row["timestamp"]=img._getexif()[306]
return row
except:
return
merge[ (merge["timestamp"]=='-----')& (merge["filepath"].str.startswith("S1") | merge["filepath"].str.startswith("S2")) ].apply(transformation, axis=1)
Но это не работает, потому что операция нарезки возвращает мне копию:
>>>merge[(merge["timestamp"]=='-----')& (merge["filepath"].str.startswith("S1") | merge["filepath"].str.startswith("S2")) ]._is_view
>>>False
Как я могу изменить поведение панд, чтобы получить представление?