#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
метода. Тогда все остальное останется таким же, как описано в моем ответе.