根据文件名将csv文件中的值与特定变量匹配



我在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中为该日期分配Count值。我有这个

# 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图时,这个Count值将是我目录中每个文件的标签,我将像这样添加

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

然而,我不确定如何匹配csv中的每个日期的计数并将其分配给目录中的文件。这是可能的吗?

假设您有如下的Pandas DataFrame:

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()将以正确的顺序给出你的Count值。

相关内容

  • 没有找到相关文章