【问题标题】:How to remove rows in pandas of type datetime64[ns] by date?如何按日期删除 datetime64[ns] 类型的 pandas 中的行?
【发布时间】:2021-08-01 23:04:33
【问题描述】:

我是个新手,开始在我的项目中使用 python。 我有数据集,第一列有datetime64[ns] 类型

     <class 'pandas.core.frame.DataFrame'>
     RangeIndex: 5889 entries, 0 to 5888
     Data columns (total 3 columns):
      #   Column  Non-Null Count  Dtype         
     ---  ------  --------------  -----         
      0   date    5889 non-null   datetime64[ns]
      1   title   5889 non-null   object        
      2   stock   5889 non-null   object        
     dtypes: datetime64[ns](1), object(2)
     memory usage: 138.1+ KB

type(BA['date'])

给予

pandas.core.series.Series

日期格式为 2020-06-10 我需要删除特定日期之前的所有实例,例如 2015-09-09

我尝试了什么:

  1. 转换为字符串。失败
  2. 使用以下方法创建条件:
.df.year <= %y & .df.month <= %m
<= ('%y-%m-%d')
create data with datetime() method
create variable with datetime64 format
  1. 只需使用 .loc() 和 .copy() 进行复制

这一切都失败了,我遇到了各种各样的错误,比如它不是 int,它不是 datetime,datetime 可变,不是这个,不是那个,不是圣牛

这种 pandas 格式怎么可能更违反直觉,我不敢相信,我第一次觉得用 C++ 编写解析器 CSV 似乎比在 python 中使用准备好的库更容易

感谢您的理解

【问题讨论】:

标签: python pandas csv datetime


【解决方案1】:

玩具示例

df = pd.DataFrame({'date':['2021-1-1', '2020-12-6', '2019-02-01', '2020-02-01']})
df.date = pd.to_datetime(df.date)
df

输入df

    date
0   2021-01-01
1   2020-12-06
2   2019-02-01
3   2020-02-01

删除2020.01.01之前的行。
我们正在选择日期在2020.01.01 之后的行并忽略旧日期。

df.loc[df.date>'2020.01.01']

输出

    date
0   2021-01-01
1   2020-12-06
3   2020-02-01

如果我们想要重置索引

df = df.loc[df.date>'2020.01.01']
df

输出

    date
0   2021-01-01
1   2020-12-06
2   2020-02-01

【讨论】:

  • 谢谢!我不敢相信,但这有效
猜你喜欢
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2020-07-13
  • 2020-08-20
  • 2013-11-14
  • 1970-01-01
  • 2023-02-07
相关资源
最近更新 更多