提问人:Kel 提问时间:11/14/2023 最后编辑:FObersteinerKel 更新时间:11/14/2023 访问量:36
使用 pd.to_datetime() 更新列时出现问题
Issues updating a column with pd.to_datetime()
问:
我在更新数据帧中的列时遇到了一些问题。 我收到的数据是数据/时间,所以我想根据pd.to_datetime格式化它。但是对 DST 的更改开始产生一些问题。
我的数据如下所示:
0 2023-10-08T19:44:29.862-04:00
1 2023-10-09T01:06:42.762-04:00
2 2023-10-12T18:35:09.060-04:00
3 2023-10-12T18:55:02.459-04:00
4 2023-10-17T23:56:28.330-04:00
5 2023-10-18T02:51:33.481-04:00
6 2023-10-24T15:59:30.074-04:00
7 2023-10-24T18:00:55.081-04:00
8 2023-11-03T15:59:30.021-04:00
9 2023-11-06T15:59:30.824-05:00
10 2023-11-07T15:59:32.386-05:00
11 2023-11-09T15:59:30.032-05:00
12 2023-11-10T15:59:57.509-05:00
14 2023-11-13T15:59:31.065-05:00
Name: Time, dtype: object
我想将它作为 dtype:datetime,这样我就可以轻松操作它(更改时区)。
我想做的操作如下:
df.Time = pd.to_datetime(df.Time, errors='coerce',utc=True)
df.Time = df.Time.dt.tz_convert("Australia/Sydney")
df.Time = pd.to_datetime(df.Time) - pd.Timedelta(8, "H")
我从中得到的错误警告是: SettingWithCopyWarning: 尝试在 DataFrame 中的切片副本上设置值。 尝试改用 .loc[row_indexer,col_indexer] = value
但是如果更改 df.df.loc[:, “时间”] 的时间 代码不计算,并且第二行出现以下错误: AttributeError:只能使用具有 datetimelike 值的 .dt 访问器
我也试图改变df。是时候 df 了。[“Time”] 或在句子末尾添加 .copy(),但仍然有相同的错误。
我错过了什么吗? 原始代码完全符合我的要求,但向我发出警告,并且在尝试解决警告时,它会创建错误。
答:
0赞
FObersteiner
11/14/2023
#1
与 pandas v2 完美配合;下面的最小可重复示例。请注意,可以通过删除对 pd.to_datetime 的第二个调用来略微简化。
import pandas as pd
df = pd.DataFrame(
{
"Time": [
"2023-10-24T18:00:55.081-04:00",
"2023-11-03T15:59:30.021-04:00",
"2023-11-06T15:59:30.824-05:00",
"2023-11-07T15:59:32.386-05:00",
"2023-11-09T15:59:30.032-05:00",
],
}
)
df["Time"] = pd.to_datetime(df["Time"], errors="coerce", utc=True)
df["Time"] = df.Time.dt.tz_convert("Australia/Sydney")
df["Time"] -= pd.Timedelta(8, "H")
df["Time"]
0 2023-10-25 01:00:55.081000+11:00
1 2023-11-03 22:59:30.021000+11:00
2 2023-11-06 23:59:30.824000+11:00
3 2023-11-07 23:59:32.386000+11:00
4 2023-11-09 23:59:30.032000+11:00
Name: Time, dtype: datetime64[ns, Australia/Sydney]
pd.__version__
'2.1.2'
评论