Pandas时区转换

2024-06-06 23:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:

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

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

我正在尝试应用tz_convert,如下所示

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

我得到以下错误,因为数据帧中有NaN个值:

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

如何通过处理空值来解决上述问题


Tags: 数据示例convertdfdtsdnantz
2条回答

这是您可以尝试的:

# 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

我们需要显式地将其转换为datetime字段,并在将其转换为其他时区之前对其进行本地化

希望这有帮助

另外,您得到的错误是由于使用方括号调用tz_convert时的语法错误

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

    df = df.dropna()

相关问题 更多 >