熊猫时区转换

问题:

我有一个数据框作为示例:

df:

a   b                      c      d
1   2020-01-20 01:00:00    32     jajskdn
2   NaN                    23     2aksn
3   2020-05-20 02:00:00    asjn   sdn
4   NaN                    sd     cas
7   NaN                    nf     cka

I m trying to apply tz_convert as below

df[b] = df[b].dt.tz_convert['America/New_York']

I'm getting below error as we have NaN values in the dataframe:

Attribute Error: 'NoneType' object has no attribute 'tz_convert'

如何通过处理空值解决以上问题?

评论
  • 流泪淂心碎
    流泪淂心碎 回复

    您可以使用以下命令从数据框中删除nan行:

        df = df.dropna()
    

  • 简暄和
    简暄和 回复

    您可以尝试以下方法:

    # just choose the non-null rows first
    df1 = df.loc[df['b'].notna()]
    
    df1['b'] = pd.to_datetime(df1['b']).dt.tz_localize('UTC').dt.tz_convert('America/New_York')
    
    # combining it again with null/NaN value rows to get the converted final df
    df_converted = pd.concat([df1, df.loc[df['b'].isna()]]).sort_values(['a'])
    

    输出:

       a                          b     c        d
    0  1  2020-01-19 20:00:00-05:00    32  jajskdn
    1  2                        NaN    23    2aksn
    2  3  2020-05-19 22:00:00-04:00  asjn      sdn
    3  4                        NaN   sdn      cas
    4  7                        NaN    nf      cka
    

    我们需要将其明确转换为日期时间字段,并在将其转换为其他时区之前对其进行本地化。

    希望这可以帮助。