2024-04-28 03:19:34 发布
网友
我有这样一个df:
a b c 1 NaT w 2 2014-02-01 g 3 NaT x df=df[df.b=='2014-02-01']
会给我
a b c 2 2014-02-01 g
我想要一个b列有NaT的所有行的数据库?
df=df[df.b==None] #Doesn't work
我要这个:
a b c 1 NaT w 3 NaT x
对于那些感兴趣的人,在我的例子中,我想删除包含在数据帧的DateTimeIndex中的NaT。我不能直接使用Karl D建议的notnull构造。首先必须从索引中创建一个临时列,然后应用掩码,然后再次删除该临时列。
df["TMP"] = df.index.values # index is a DateTimeIndex df = df[df.TMP.notnull()] # remove all NaT values df.drop(["TMP"], axis=1, inplace=True) # delete TMP again
isnull和notnull与NaT一起工作,因此您可以像处理NaNs一样处理它们:
isnull
notnull
NaT
NaNs
>>> df a b c 0 1 NaT w 1 2 2014-02-01 g 2 3 NaT x >>> df.dtypes a int64 b datetime64[ns] c object
只需使用isnull选择:
df[df.b.isnull()] a b c 0 1 NaT w 2 3 NaT x
使用示例数据帧:
df = pd.DataFrame({"a":[1,2,3], "b":[pd.NaT, pd.to_datetime("2014-02-01"), pd.NaT], "c":["w", "g", "x"]})
直到v0.17它才开始工作:
df.query('b != b')
你必须做到:
df.query('b == "NaT"') # yes, surprisingly, this works!
尽管我只推荐第一种方法,但从v0.17开始,这两种方法都可以工作。
对于那些感兴趣的人,在我的例子中,我想删除包含在数据帧的DateTimeIndex中的NaT。我不能直接使用Karl D建议的notnull构造。首先必须从索引中创建一个临时列,然后应用掩码,然后再次删除该临时列。
isnull
和notnull
与NaT
一起工作,因此您可以像处理NaNs
一样处理它们:只需使用
isnull
选择:使用示例数据帧:
直到v0.17它才开始工作:
你必须做到:
尽管我只推荐第一种方法,但从v0.17开始,这两种方法都可以工作。
相关问题 更多 >
编程相关推荐