我在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值。