首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Dataframe中的行,如果它们与基于索引的第二次数据rows匹配

删除Dataframe中的行,如果它们与基于索引的第二次数据rows匹配
EN

Stack Overflow用户
提问于 2020-08-01 17:20:04
回答 1查看 38关注 0票数 0

我有一个dataframe,其中包括一些“无效”行,我想删除这些行。我有第二个dataframe,它包含这些无效的行。

无效行为=

代码语言:javascript
复制
DatetimeIndex(['2019-11-11', '2019-12-06', '2019-12-13', '2019-12-15',
           '2019-12-17', '2019-12-18', '2019-12-19', '2019-12-31',
           '2020-01-01', '2020-01-02', '2020-01-03', '2020-01-10',
           '2020-01-15', '2020-01-17', '2020-01-22', '2020-02-05',
           '2020-02-07', '2020-02-09', '2020-02-10', '2020-02-12',
           '2020-02-14', '2020-02-19', '2020-02-20', '2020-02-21',
           '2020-02-25', '2020-02-26', '2020-02-28', '2020-03-02',
           '2020-03-04', '2020-03-06', '2020-03-11', '2020-03-12',
           '2020-03-15', '2020-03-22', '2020-03-29', '2020-04-04',
           '2020-04-11', '2020-04-13', '2020-05-13', '2020-05-23',
           '2020-05-29', '2020-05-30', '2020-06-12', '2020-06-15',
           '2020-06-19', '2020-06-24', '2020-06-26', '2020-07-09',
           '2020-07-10', '2020-07-11', '2020-07-12', '2020-07-16',
           '2020-07-17', '2020-07-18', '2020-07-20', '2020-07-23',
           '2020-07-24', '2020-07-26'],
          dtype='datetime64[ns]', name='dateTime', freq=None)

我想从以下位置删除这些行(日期):

代码语言:javascript
复制
DatetimeIndex(['2019-11-11 11:00:00', '2019-11-11 12:00:00',
           '2019-11-11 13:00:00', '2019-11-11 14:00:00',
           '2019-11-11 15:00:00', '2019-11-11 16:00:00',
           '2019-11-11 17:00:00', '2019-11-11 18:00:00',
           '2019-11-11 19:00:00', '2019-11-11 20:00:00',
           ...
           '2020-07-26 05:00:00', '2020-07-26 06:00:00',
           '2020-07-26 07:00:00', '2020-07-26 08:00:00',
           '2020-07-26 09:00:00', '2020-07-26 10:00:00',
           '2020-07-26 11:00:00', '2020-07-26 12:00:00',
           '2020-07-26 13:00:00', '2020-07-26 14:00:00'],
          dtype='datetime64[ns]', name='dateTime', length=6196, freq='H')

我试过:

代码语言:javascript
复制
df_steps1h.loc[df_steps1h.index.difference(df_valid.index), ]

代码语言:javascript
复制
df_steps1h[~df_steps1h.index.isin(df_valid.index)].dropna()

DataFrames是不同的,所以我不想使用concat或合并。但它不会移除任何东西。知道为什么吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-01 17:52:48

假设df为无效行DataFrame,df_valid为要从中删除的原始DataFrame。

代码语言:javascript
复制
df_valid.loc[:,"actual_index"]=df_valid.index
df_valid.loc[:,"actual_index"]=df_valid.loc[:,"actual_index"].apply(lambda x: datetime.strftime(x,'%Y-%m-%d'))
df_valid.loc[:,"actual_index"]=pd.to_datetime(df_valid.loc[:,"actual_index"])
df_valid=df_valid[~df_valid.actual_index.isin(df.index)]
df_valid.drop('actual_index', inplace=True, axis=1)

在上述查询中,虽然DataFrame的索引为DatetimeIndex类型,但其值与基于Frequency的其他DataFrame有显着性差异。

该解决方案旨在将其转换为类似的频率,从而执行操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63208037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档