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

如何在Pandas中的列中查找部分数值?

  •  0
  • BallerNacken  · 技术社区  · 7 年前

    df.loc[df["MESS_DATUM"] == 20170807]
    

    这是行不通的。只有当我这样做的时候

    df.loc[df["MESS_DATUM"] == 2017080723]
    

    它适用于那条线。但我需要的其他行只包含日期(不含小时)。我知道有些事 .str.cotains("")

    1 回复  |  直到 7 年前
        1
  •  2
  •   MaxU - stand with Ukraine    7 年前

    我们可以“整数除法” MESS_DATUM 列依据 100 :

    df.loc[df["MESS_DATUM"]//100 == 20170807]
    

    In [29]: df
    Out[29]:
       MESS_DATUM
    0  2017080719
    1  2017080720
    2  2017080721
    3  2017080722
    4  2017080723
    
    In [30]: df.dtypes
    Out[30]:
    MESS_DATUM    int64
    dtype: object
    
    In [31]: df["MESS_DATUM"]//100
    Out[31]:
    0    20170807
    1    20170807
    2    20170807
    3    20170807
    4    20170807
    Name: MESS_DATUM, dtype: int64
    

    datetime 数据类型:

    df["MESS_DATUM"] = pd.to_datetime(df["MESS_DATUM"].astype(str), format='%Y%m%d%H')
    

    df["MESS_DATUM"] 属于 float dtype,然后我们可以使用以下技巧:

    In [41]: pd.to_datetime(df["MESS_DATUM"].astype(str).str.split('.').str[0], 
                            format='%Y%m%d%H')
    Out[41]:
    0   2017-08-07 19:00:00
    1   2017-08-07 20:00:00
    2   2017-08-07 21:00:00
    3   2017-08-07 22:00:00
    4   2017-08-07 23:00:00
    Name: MESS_DATUM, dtype: datetime64[ns]