python - 根据python中的每日表删除每行的所有(每小时)日条目
问题描述
我有一个带有datetime64[ns]
格式的对象的数据框,所以我有每小时基数的数据:
Datum Values
2020-01-01 00:00:00 1
2020-01-01 01:00:00 10
....
2020-02-28 00:00:00 5
2020-03-01 00:00:00 4
和另一个带有关闭日期的表格,也在datetime64[ns]
格式的列中,所以我只有一个日期格式:
Dates
2020-02-28
2020-02-29
....
如何删除第一个数据帧 df 中的所有天数,这些天数出现在第二个数据帧日期中?所以 df 是:
2020-01-01 00:00:00 1
2020-01-01 01:00:00 10
....
2020-03-01 00:00:00 4
解决方案
用于Series.dt.floor
将time
s 设置为,因此可以在中使用倒置掩码0
进行过滤:Series.isin
boolean indexing
df['Datum'] = pd.to_datetime(df['Datum'])
df1['Dates'] = pd.to_datetime(df1['Dates'])
df = df[~df['Datum'].dt.floor('d').isin(df1['Dates'])]
print (df)
Datum Values
0 2020-01-01 00:00:00 1
1 2020-01-01 01:00:00 10
3 2020-03-01 00:00:00 4
Series.view
编辑:对于标志列,通过或将掩码转换为整数Series.astype
:
df['flag'] = df['Datum'].dt.floor('d').isin(df1['Dates']).view('i1')
#alternative
#df['flag'] = df['Datum'].dt.floor('d').isin(df1['Dates']).astype('int')
print (df)
Datum Values flag
0 2020-01-01 00:00:00 1 0
1 2020-01-01 01:00:00 10 0
2 2020-02-28 00:00:00 5 1
3 2020-03-01 00:00:00 4 0
推荐阅读
- java - 我想用填充动画渐变的颜色绘制弧线
- laravel - 由于 php 版本不同,magento 2 和 laravel 不支持
- selenium-webdriver - ContextClick 选项在 Selenium 3.0 中不起作用
- python - 如何在 Python 中创建深度嵌套循环
- android - 具有不同枢轴的 ImageView 旋转
- ruby-on-rails - mongoid 相当于加载?
- django - 如何根据 django 模板中的字段值显示排名?
- php - 我尝试更新我 laragon 中的 php,但我得到了这个
- java - BearerTokenAccessDeniedHandler 类定义 未找到
- regex - 匹配第一个实例的正则表达式