Сопоставление значения из csv-файла с определенной переменной в зависимости от имени файла

#python #pandas #csv #networkx

Вопрос:

У меня есть столбец в csv-файле, который содержит значения, которые я хочу сопоставить с файлом в моем каталоге python (я хочу сопоставить по дате). Для этого я пытаюсь сопоставить дату в имени файла с датой в формате csv.

csv выглядит следующим образом

 Date        Count
17/08/2020    5
24/04/2020    1
18/02/2021    3
 

И мой каталог файлов на python выглядит так:

 '.../Graphs/graph_2020-08-04_2020-08-17.csv',
 '.../Graphs/graph_2020-04-11_2020-04-24.csv',
 '.../Graphs/graph_2021-02-05_2021-02-18.csv',
 

Я хочу взять вторую дату в этом имени файла и присвоить значение количества для этой даты из csv. Что у меня есть, так это

     # use glob to get all the csv files in the folder
path = r'...' # use your path

csv_files = glob.glob(os.path.join(path, "*.csv"))
dataframes = []
for csv_file in csv_files:
    dataframes.append(pd.read_csv(csv_file))
 

а затем введите вторую дату в имя файла

 dates=csv_files[0][48:58]
 

и преобразуйте его в формат времени, чтобы упростить сопоставление (?)

 dates= pd.to_datetime(dates)
 

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

 labels = []
for graph in graphs:
    labels.append(Count)
 

Однако я не уверен, как сопоставить количество для каждой даты в csv и назначить его файлу в каталоге. ВОЗМОЖНО ли это сделать?

Ответ №1:

Допустим, у вас есть следующий фрейм данных Pandas.

 import pandas as pd

df = pd.DataFrame([['17/08/2020', 5], ['24/04/2020', 1], ['18/02/2021', 3]], columns=['Date', 'Count'])
df.Date = pd.to_datetime(df.Date)
 

Это выглядит примерно так.

         Date  Count
0 2020-08-17      5
1 2020-04-24      1
2 2021-02-18      3
 

Что вы можете сделать, так это выбрать/отфильтровать строки по условию.

 dates = ['2020-08-17', '24/04/2020']
dates = pd.to_datetime(dates)
df_filtered = df[df.Date.isin(dates)]
print(df_filtered)
 

Выход:

         Date  Count
0 2020-08-17      5
1 2020-04-24      1
 

Затем df_f.Count.tolist() даст вам значения вашего счета в правильном порядке.

Комментарии:

1. Как это позволит мне выполнить мою задачу?

2. Прочитайте ваш csv-файл с помощью этого pd.read_csv метода. Тогда все остальное останется таким же, как описано в моем ответе.