Python 如果数据帧中的行与基于索引的第二个数据帧匹配,则删除这些行

Python 如果数据帧中的行与基于索引的第二个数据帧匹配,则删除这些行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,其中包含一些“无效”行,我想删除这些行。我有第二个数据帧,其中包含这些无效行 无效行为= 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-

我有一个数据帧,其中包含一些“无效”行,我想删除这些行。我有第二个数据帧,其中包含这些无效行

无效行为=

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)
我想从以下位置删除这些行(日期):

我试过:

df_steps1h.loc[df_steps1h.index.difference(df_valid.index), ]

数据帧是不同的,所以我不想使用concat或merge。 但它不会移除任何东西。你知道为什么吗?
谢谢

df视为无效的行数据帧,将df\u valid视为要从中删除的原始数据帧

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)
在上述查询中,尽管数据帧的索引类型为DatetimeIndex,但其值与基于频率的其他数据帧的值有显著差异


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

Hello!感谢您的回答,我尝试运行您的代码,但它不会删除任何行:/请在编辑后重试。我已经更改了这一行
df\u valid=df\u valid[~df\u valid.actual\u index.isin(df.index)]
现在我得到:一个值正试图在数据帧的一个切片副本上设置请参见文档中的警告:errors=errors,但我仍然需要数据帧包含每个小时的信息!我更改了
df\u valid=df\u valid[~df\u valid.index.isin(df.index)]
,它可以正常工作
df_steps1h[~df_steps1h.index.isin(df_valid.index)].dropna()
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)