如何打印数据帧中的所有日期(解析为字符串),该日期在字符串中包含2012-06
我不记得哪个字符象征着“好吧,我是随机字符,这部分并不重要”
我以为是(.*)
,但不是
此操作的目的是查找并打开所有CSV文件。所以我想我最终可以避免这样的事情:2012-06(.*).csv
打开2012年6月的所有文件并“执行操作”
import pandas as pd
from datetime import timedelta
datelist = pd.date_range(pd.datetime(year = 2012, month = 6, day = 15), pd.datetime.today()).tolist()
df = pd.DataFrame(datelist)
for date in df[0]:
d = str(date)
if d == "2012-06(.*)":
print(d)
答案 0 :(得分:4)
我建议使用Series.str.contains
:
df1 = df[df[0].astype(str).str.contains("2012-06")]
或用Series.str.startswith
过滤熊猫:
df1 = df[df[0].astype(str).str.startswith("2012-06")]
print (df1)
0
0 2012-06-15
1 2012-06-16
2 2012-06-17
3 2012-06-18
4 2012-06-19
5 2012-06-20
6 2012-06-21
7 2012-06-22
8 2012-06-23
9 2012-06-24
10 2012-06-25
11 2012-06-26
12 2012-06-27
13 2012-06-28
14 2012-06-29
15 2012-06-30
答案 1 :(得分:1)
您可以使用glob(https://docs.python.org/3/library/glob.html)来使用2012-06-*
模式。
例如:
假设您将这些文件放在一个文件夹中:
ls -l files
total 0
-rw-r--r-- 1 julien staff 0 Apr 30 13:57 2012-06-01_test.csv
-rw-r--r-- 1 julien staff 0 Apr 30 13:58 2012-06-15_my_file.csv
-rw-r--r-- 1 julien staff 0 Apr 30 13:58 2013-01-10_my_file.csv
您可以这样做:
import glob
files = glob.glob('files/2012-06*.csv')
print(files)
它将打印:
['files/2012-06-15_my_file.csv', 'files/2012-06-01_test.csv']
使用此列表文件,您可以遍历并打开每个文件,例如
答案 2 :(得分:0)
您还可以通过year
和month
进行查询。
例如:
import pandas as pd
datelist = pd.date_range(pd.datetime(year = 2012, month = 6, day = 15), pd.datetime.today()).tolist()
df = pd.DataFrame(datelist)
print(df[(df[0].dt.year == 2012) & (df[0].dt.month == 6)])