代码之家  ›  专栏  ›  技术社区  ›  AlexW

Python Pandas-在dataframe中获取最早的数据,在搜索时忽略None类型?

  •  0
  • AlexW  · 技术社区  · 6 年前

    我试图在一个数据帧中获得最早的日期,我已经看到了使用下图:-

    min(s2s_vpn_data['LastPollTime'])
    

    下面的数据框示例:

    >>> s2s_vpn_data
       id  device name       public_ip     upload                LastPollTime NodeID   download status                          connected_time
    0   1  XXXX   XXXX         2.2.2.2   7.48 Bit  2018-08-30 15:13:02.900000   1782   7.48 Bit   True  1 Months, 2 Days, 19 Hours, 25 Minutes
    1   3  XXXX   XXXX         3.3.3.3  23.46 KiB  2018-08-30 15:10:26.900000   1782  27.31 PiB   True  1 Months, 2 Days, 19 Hours, 25 Minutes
    2   4  XXXX   test         1.1.1.1       None                        None   None       None   None                                    None
    >>> type(s2s_vpn_data.ix[0]["LastPollTime"])
    <class 'datetime.datetime'>
    

    TypeError: '<' not supported between instances of 'NoneType' and 'datetime.datetime'
    

    有没有一种方法可以在搜索时忽略None类型?理想情况下,我应该返回下面的内容

    2018-08-30 15:10:26.900000
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Alex    6 年前

    在执行min时,可以删除None:

    s2s_vpn_data['LastPollTime'].dropna().min()
    
        2
  •  1
  •   sundance    6 年前

    如果序列(列)同时包含datetimes和None,那么序列的数据类型实际上可能是 object pd.to_datetime 将所有类型转换为有效的datetime/Timestamp对象。这将把None值转换为 NaT 自动,然后在使用 .min

    df["LastPollTime"] = pd.to_datetime(df["LastPollTime"])
    df["LastPollTime"].min()