python - 转换一系列日期格式熊猫不起作用
问题描述
我有一个日期框架:
x = pd.DataFrame({"A": ['19940213', '10000301', '19240613', '10000501']})
为什么我不能将它们转换为 yyyy-mm-dd ?我已经关注了多个 SO 帖子并且没有工作。
我试过了 :
x["d"] = pd.to_datetime(df.A)
和
x["d"] = pd.to_datetime(df["A"])
输出 KeyError:'A'。
有什么帮助吗?
解决方案
首次使用x.A
or x['A']
,但日期时间无效 -format
为YYYYMMDD
格式添加参数,errors='coerce'
用于缺少值,因为不匹配:
x = pd.DataFrame({"A": ['19940213', '10000301', '19240613', '10000501']})
x["d"] = pd.to_datetime(x.A, format='%Y%m%d', errors='coerce')
print (x)
A d
0 19940213 1994-02-13
1 10000301 NaT
2 19240613 1924-06-13
3 10000501 NaT
由于 pandas 以纳秒分辨率表示时间戳,因此可以使用 64 位整数表示的时间跨度被限制为大约 584 年:
输入 [92]:pd.Timestamp.min
输出 [92]:时间戳('1677-09-21 00:12:43.145225')输入 [93]:pd.Timestamp.max
输出 [93]:时间戳('2262-04-11 23:47:16.854775807')
另一种可能的解决方案是使用Periods:
def conv(x):
return pd.Period(year=x // 10000, month=x // 100 % 100,
day=x % 100, freq='D')
x = pd.DataFrame({"A": ['19940213', '10000301', '19240613', '10000501']})
x["d"] = x.A.astype(int).apply(conv)
print (x)
A d
0 19940213 1994-02-13
1 10000301 1000-03-01
2 19240613 1924-06-13
3 10000501 1000-05-01
推荐阅读
- android - Android Oauth2 对我的 Spring Server 进行身份验证
- java - 如何检查 Heroku 上正在运行的容器的日志?
- java - 无法从 search.maven.org 下载工件
- list - 从控制器传递多个列表以查看
- scaling - Jelastic - 垂直缩放
- python - Django - 单击表单中的按钮时显示加载消息、弹出窗口、屏幕或图标
- visual-studio-code - 如何在 vscode 中的多个链式任务中使用相同的输入字符串?
- c# - DynamoDB c#无法使用列表上的添加操作更新项目
- php - PHP:比较对象的键值
- react-native - React Native 应用程序在启动时因 Invariant Violation 崩溃