【发布时间】:2019-08-08 01:01:11
【问题描述】:
当满足特定条件时,我试图删除属于给定索引的行。在这种情况下,我想在属于该索引的所有值都是 NaT 时删除该索引。
我尝试过使用下面的代码,但是 dropna 方法并没有解决问题。
import pandas as pd
df_dict = {'id':['001','002','002','003','003'],'req_dat':['2018-11-20','2018-12-13','2018-12-23','2018-12-27','2018-12-30'],'app_date':['2018-11-21','NaT','2018-12-24','NaT','NaT'],'can_date':['2019-02-21','NaT','2019-01-25','NaT','NaT']}
df = pd.DataFrame.from_dict(df_dict)
df1 = df.set_index(['id','req_dat'])
df2 = df1.dropna(how='all')
这是原始数据框:
app_date can_date
id req_dat
001 2018-11-20 2018-11-21 2019-02-21
002 2018-12-13 NaT NaT
2018-12-23 2018-12-24 2019-01-25
003 2018-12-27 NaT NaT
2018-12-30 NaT NaT
我得到了这个结果:
app_date can_date
id req_dat
001 2018-11-20 2018-11-21 2019-02-21
002 2018-12-23 2018-12-24 2019-01-25
我期待这一点,其中 req_dat = 2018-12-13 的行不会被删除,因为它属于 id = 002 而不是 all 属于 id = 002 的行NaT,因此不应删除任何行:
app_date can_date
id req_dat
001 2018-11-20 2018-11-21 2019-02-21
002 2018-12-13 NaT NaT
2018-12-23 2018-12-24 2019-01-25
提前致谢。
【问题讨论】:
-
拥有
NaT行是什么意思?一行的所有列都是NaT还是任何一列都是NaT?请举个例子,删除一些行 -
属于索引 003 的两行都被删除,我可以在应用 dropna 方法之前添加原始数据帧。我的意思是所有 colmun 都是 NaT,我也会编辑它。感谢您的回复。