Я получил файл .csv с 2 столбцами (упрощенно). Один столбец содержит данные, а другой - имя файла. К сожалению, это имя файла может быть неправильным, которое я должен определить, сравнивая дату и имя файла.
Что я хочу
# initial situation
d = {
'call_date': ["20200102-09", "20191203-04", "20200103-10"],
'filename': ["20200102-09xx.wav", "20200102-10yy.wav", "20200103-10zz.wav"]
}
df = pd.DataFrame(data=d)
print(df)
# call_date filename
# 0 20200102-09 20200102-09xx.wav
# 1 20191203-04 20200102-10yy.wav
# 2 20200103-10 20200103-10zz.wav
...
# desired result
print(pd.Series([True, False, True]))
# 0 True
# 1 False
# 2 True
# dtype: bool
При желаемом результате я могу подсчитать, сколько неправильных файлов Я имею и фильтрую DataFrame, чтобы он содержал только допустимые записи.
То, что я пробовал
Обычно сравнение будет работать так:
# True / False
df["call_date"] == df["filename"]
# filter DF
df[df["call_date"] == df["filename"]]
Pandas имеет pandas .Series.str.startswith функция, однако она работает только для одной строки, а не для чего-то, например:
df["filename"].str.startswith(df["call_date"])
# 0 NaN
# 1 NaN
# 2 NaN
# Name: filename, dtype: float64
Вопрос
Как мне выполнить сравнение по строкам, начинаются ли элементы в столбце «имя файла» со строки, найденной в столбце «call_date»?