Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据日期的月份删除表行?_Python_Python 3.x_Pandas - Fatal编程技术网

Python 如何根据日期的月份删除表行?

Python 如何根据日期的月份删除表行?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个来自csv文件的表格,其中包含格式为YYYY-MM-DD的各种数据的日期。我想知道如何删除12月至4月期间记录的数据。换句话说,我想删除月份不是12、01、02、03和04的行 我该怎么做 您只需执行以下操作: exclude_months = [12,1,2,3,4] df['Buoy 44017 Time'] = pd.to_datetime(df['Buoy 44017 Time']) # remove rows new_df = df[df['Buoy 44017 Time'

我有一个来自csv文件的表格,其中包含格式为YYYY-MM-DD的各种数据的日期。我想知道如何删除12月至4月期间记录的数据。换句话说,我想删除月份不是12、01、02、03和04的行

我该怎么做

您只需执行以下操作:

exclude_months = [12,1,2,3,4]
df['Buoy 44017 Time'] = pd.to_datetime(df['Buoy 44017 Time'])

# remove rows 
new_df = df[df['Buoy 44017 Time'].dt.month.isin(exclude_months)]

以下是一种处理熊猫的方法:

import pandas as pd
from datetime import datetime

def date_filter(dates):
    return [
        datetime.strptime(date,"%Y-%m-%d").month not in (12,1,2,3,4)
        for date in dates
    ]

df = pd.read_csv('my_file.csv')

selected_rows = df.loc[ date_filter(df['Date']) ]  

使用dataframe loc方法过滤掉不需要的日期

这段代码实际上与我所期望的相反;它将删除12月到4月之间有个月的行。但是,可以通过移除最后一行中的~轻松解决此问题。谢谢!