python - 将列标题更改为日期格式在数据框中不起作用
问题描述
我有一个数据框,其中所有标题都是字符串格式。但是大多数标题实际上是 YYYY-MM 日期,我想将它们更改为日期格式。
ldnCrimes.columns:
Index(['WardCode', 'Ward Name', 'Borough', 'Major Category', 'Minor Category',
'2010-04', '2010-05', '2010-06', '2010-07', '2010-08',
...
'2018-03', '2018-04', '2018-05', '2018-06', '2018-07', '2018-08',
'2018-09', '2018-10', '2018-11', '2018-12'],
dtype='object', length=110)`
尝试时:
ldnCrime.columns = ldnCrime.columns[:1].tolist() + pd.to_datetime(ldnCrime.columns[5:]).tolist()
但后来我收到以下错误:
ValueError:长度不匹配:预期轴有 110 个元素,新值有 106 个元素
这 4 个元素是非日期标题,我不想更改它们的格式。
但后来我收到以下错误:
ValueError:长度不匹配:预期轴有 110 个元素,新值有 106 个元素
这 4 个元素是非日期标题,我不想更改它们的格式。
在此先感谢您提供的任何帮助。
解决方案
使用@Henry Yik 评论中的解决方案 - 选择第一个5
值:
idx = ['WardCode', 'Ward Name', 'Borough', 'Major Category', 'Minor Category',
'2010-04', '2010-05', '2010-06', '2010-07', '2010-08',
'2018-03', '2018-04', '2018-05', '2018-06', '2018-07', '2018-08',
'2018-09', '2018-10', '2018-11', '2018-12']
ldnCrime = pd.DataFrame(columns=idx)
ldnCrime.columns = ldnCrime.columns[:5].tolist()+pd.to_datetime(ldnCrime.columns[5:]).tolist()
另一个想法是将值转换为Series
并使用fillna
:
c = ldnCrime.columns.to_series()
ldnCrime.columns = pd.to_datetime(c, errors='coerce').fillna(c)
print (ldnCrime.columns)
Index([ 'WardCode', 'Ward Name', 'Borough',
'Major Category', 'Minor Category', 2010-04-01 00:00:00,
2010-05-01 00:00:00, 2010-06-01 00:00:00, 2010-07-01 00:00:00,
2010-08-01 00:00:00, 2018-03-01 00:00:00, 2018-04-01 00:00:00,
2018-05-01 00:00:00, 2018-06-01 00:00:00, 2018-07-01 00:00:00,
2018-08-01 00:00:00, 2018-09-01 00:00:00, 2018-10-01 00:00:00,
2018-11-01 00:00:00, 2018-12-01 00:00:00],
dtype='object')
推荐阅读
- regex - 包含至少一位数字的字母数字字符串的正则表达式
- reactjs - 为什么我不能将我的组件导入 React JS 中的另一个组件?
- react-native - Expo CLI 和 Expo SDK 有什么区别
- java - 当我在脚本中导入 Kivymd 时,使用 buildozer 构建的 Android 应用程序崩溃
- python - 如何用python计算docx中找到的元素的数量?
- node.js - 如何使用 CNG 密钥使用 JwtSecurityTokenHandler 签名的 Nodejs 工具使用 ES384 算法验证 JWT 令牌
- webpack - Webpack 未完成就冻结
- c# - 如何在 C# 中保存面板并恢复它?
- reactjs - Discord oAuth 与本机反应
- encryption - 关于英特尔 SGX 模拟器与基于 Rust 的客户端的兼容性的查询