按给定条件过滤数据框

时间:2019-08-27 10:31:20

标签: python-3.x pandas

所以我有一个数据框,它写入了一个看起来像这样的csv文件

Atrasos,Data
18,2019-08-24
22,2019-08-25
52,2019-09-21
31,2019-09-22

当达到每月的最后一天时,我想过滤该数据框以获取从实际月份的第一天到最后一天的值,然后将其返回以呈现图形。

我创建了一个有12个月的列表,然后将ActualMonth设置为变量,现在我要执行包含过滤器的if条件。

def graphs():
   months = [1,2,3,4,5,6,7,8,9,10,11,12]
   now = datetime.now()
   actualMonth = now.month
   file = pd.read_csv('files/graphs/delayedData.csv')
   file['Data'] = pd.to_datetime(file['Data'])
   if actualMonth in months:
      #do the filter depending on the month we are

我进行了搜索,但找不到任何有帮助的内容...

预期的输出将是从第一天到结束只有当前月份的数据框,因此我可以抓取该数据框并创建图形。 因此,本月(八月)应该会这样回来

Atrasos,Data
18,2019-08-24
22,2019-08-25

然后,我应该能够在到达最后一天的每个月中获取这些数据并构建图形。

2 个答案:

答案 0 :(得分:1)

Series.dt.monthboolean indexing一起使用:

df = file[file['Data'].dt.month == actualMonth]
#alternative
#df = file[file['Data'].dt.month == pd.datetime.now().month]
print (df)
   Atrasos       Data
0       18 2019-08-24
1       22 2019-08-25

答案 1 :(得分:1)

尝试一下:

import datetime;

today = str(datetime.date.today());
curr_month = int(today[5:7]);

file[file['Data'].dt.month==curr_month]