【问题标题】:Python: Is there a better way to remove a data range from a DataFrame in pandas?Python:有没有更好的方法从 Pandas 的 DataFrame 中删除数据范围?
【发布时间】:2017-04-07 20:34:18
【问题描述】:

我在 Python 2.5 和 pandas 版本 0.9.0 下工作,需要从 DataFrame 中删除一系列日期。 我使用以下代码执行此操作:

import pandas as pd
import numpy as np
import datetime

date1 = datetime.datetime(2009,06,01,10,0)
date2 =  datetime.datetime(2009,06,02,05,00)
dates = pd.date_range(start=date1,end=date2,freq="30min")
df = pd.DataFrame(np.random.rand(len(dates), 1)*1500, index=dates, columns=['Power'])

date3 = datetime.datetime(2009,06,01,16,0)
date4 = datetime.datetime(2009,06,01,23,0)
df1 = df[df.index <= date3]
df2 = df[df.index >= date4]
df_new = pd.concat([df1,df2])

有没有更好的方法来获得相同的结果?

我期待这样的事情会起作用:

df_new2 = df[df.index <= date3 | df.index >= date4]

但是我收到以下错误:

TypeError: unsupported operand type(s) for |: 'datetime.datetime' and 'DatetimeIndex'

【问题讨论】:

  • 在每个条件周围加上括号:df_new2 = df[(df.index = date4)]

标签: python datetime pandas dataframe


【解决方案1】:

问题在于 python 不知道如何应用布尔运算。这样做:

df_new2 = df[(df.index <= date3) | (df.index >= date4)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2020-12-06
    • 2018-04-28
    • 2020-02-06
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多