Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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_Pandas_Dataframe_Datetime - Fatal编程技术网

Python 从数据框中删除闰年日

Python 从数据框中删除闰年日,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我有福勒。数据帧: datetime 2012-01-01 125.5010 2012-01-02 125.5010 2012-01-03 125.5010 2012-02-04 125.5010 2012-02-05 125.5010 2012-02-29 125.5010 2012-02-28 125.5010 2016-01-07 125.5010 2016-01-08 125.5010 2016-02-29 81.6237

我有福勒。数据帧:

datetime
2012-01-01    125.5010
2012-01-02    125.5010
2012-01-03    125.5010
2012-02-04    125.5010
2012-02-05    125.5010
2012-02-29    125.5010
2012-02-28    125.5010
2016-01-07    125.5010
2016-01-08    125.5010
2016-02-29     81.6237
我想删除对应于2月29日的所有行,结果是foll。数据帧:

datetime
2012-01-01    125.5010
2012-01-02    125.5010
2012-01-03    125.5010
2012-02-04    125.5010
2012-02-05    125.5010
2012-02-28    125.5010
2016-01-07    125.5010
2016-01-08    125.5010
现在,我只是手动操作:


df.drop(df.index['2012-02-29']])
。如何使其在所有年份都能正常工作,而无需手动指定行索引。

IIUC您可以通过以下方式对其进行屏蔽和删除:


如果您的数据帧已经有
datetime
列作为索引,您可以:

df = df[~((df.index.month == 2) & (df.index.day == 29))]

这将删除所有年份中包含2月29日的行。

您可以将日期视为
string
,并查看它是否以
02-29
结尾:

df = df[~df.index.str.endswith('02-29')]

使用此方法,您可以使用任何字符串比较方法,如
contains
,等等。

很遗憾您编辑了原始答案,它具有更广泛的适用性。没问题,回滚功能非常强大。谢谢。这与这个问题非常相似:如果日期不是索引,则会有轻微变化。
df=df[~((df['date'].dt.month==2)和(df['date'].dt.day==29))
df = df[~df.index.str.endswith('02-29')]