【问题标题】:How to remove rows if certain condition is met (Python)如果满足某些条件,如何删除行(Python)
【发布时间】:2018-01-09 19:54:47
【问题描述】:

我通过合并 2 个数据框并删除重复行创建了一个数据框。是否有一个命令允许我通过删除特定列的日期低于今天的日期/过期的行来进一步过滤此数据框?

【问题讨论】:

  • df = df[~(df['Date'] < date_today)]

标签: python sql database pandas dataframe


【解决方案1】:

使用boolean indexingquery,但需要反转条件 - 过滤当前和更高的值:

rng = pd.date_range('2017-08-01', periods=10)
df = pd.DataFrame({'Date': rng, 'a': range(10)})  
print (df)
        Date  a
0 2017-08-01  0
1 2017-08-02  1
2 2017-08-03  2
3 2017-08-04  3
4 2017-08-05  4
5 2017-08-06  5
6 2017-08-07  6
7 2017-08-08  7
8 2017-08-09  8
9 2017-08-10  9

df1 = df[df['Date'] >= pd.datetime.today()]
print (df1)
        Date  a
2 2017-08-03  2
3 2017-08-04  3
4 2017-08-05  4
5 2017-08-06  5
6 2017-08-07  6
7 2017-08-08  7
8 2017-08-09  8
9 2017-08-10  9

date_today = pd.datetime.today()
df1 = df.query("Date >=@date_today")
print (df1)
        Date  a
2 2017-08-03  2
3 2017-08-04  3
4 2017-08-05  4
5 2017-08-06  5
6 2017-08-07  6
7 2017-08-08  7
8 2017-08-09  8
9 2017-08-10  9

【讨论】:

  • 感谢您的快速回复。我昨天开始使用 Python,所以请原谅我缺乏知识,但如果使用查询,我肯定会将“今天的日期”设置为固定值。这意味着如果我下周查看了数据库但其中一个条目已过期,则数据框将不会反映这一点。此外,每天更改代码以反映今天的新日期有什么意义 - 如果这是解决方案,我不妨直接从数据库中删除数据。
  • 对不起,我有点困惑 - pd.datetime.today() 每天生成 date - 例如明天2017-09-02。有问题吗?
  • 对不起,我现在明白你的意思了。我不知道 pd.datetime.today() 命令。
  • 很高兴能帮上忙!如果我的回答有帮助,请不要忘记 accept 它 - 单击答案旁边的复选标记 () 将其从灰色切换为已填充。谢谢。
  • 嗨,Jezrael,我还有一些问题,也许你能帮忙?为了根据特定日期删除行,我需要将所有列值转换为相同的日期时间格式。这就是我遇到问题的地方。有些日期类似于 'YYYY-MM-DD HH:MM:SS',但其他日期是 'MM/DD/YYYY' 格式。如何标准化这两种格式以使它们相同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
相关资源
最近更新 更多