python - 当在 0 之前还有年份时,如何将带有“-”的日期字符串转换为整数
问题描述
我在 Python 中有一个数据框,其中一列描述了不同的时间格式。
不同的格式是
- 钠
- 只有一年
- 年、月
- 年、月、日
我无法将它转换为日期时间,因为它的日期早于 0。它是关于博物馆物品的,所以有些作品来自 -800。
但是字符串有时也会显示由“-”分隔的年、月和日(例如“1880-04-23”)。我不能只将“-”转换为空字符串,因为 0 之前的年份也会出错。
有人可以帮我解决这个问题。有太多不同的表格只能选择一个并删除所有其他行,这意味着数据集最终将非常空。
如果最后一年也可以完美,我只想能够以整数使用它。
我现在尝试做的是迭代列中的每一行,然后从第二个元素开始迭代该行中字符串的元素,搜索“-”。这样我可以在第一次出现'-'之后删除所有内容(因为我从第二个元素开始,如果年份在0之前,则不会看到'-')或用'# ' 所以我以后可以拆分它。
for i in range(len(df)):
for element in df.loc[i,'columnname_with_dates_as_strings'][1:]:
element.replace('-','#')
但这不起作用,因为我得到了 keyerror: 0 我认为我的第二行有问题但我不知道为什么
解决方案
def split_date(date_str):
if date_str[0] == '-':
sign = 1
else:
sign = 0
date_array = date_str[sign:].split('-')
return (sign, date_array)
>>>
>>> split_date("1880-04-23")
(0, ['1880', '04', '23'])
>>> split_date("-800")
(1, ['800'])
>>> split_date("-123-5-6")
(1, ['123', '5', '6'])
推荐阅读
- reactjs - 在 Redux & Typescript 中表示“登录”和“注销”以避免在 mapStateToProps 中进行过多检查
- angular - 如何在 Ionic OneSignal 中获取 player_id?
- geospatial - MarkLogic 地理空间查询不返回分数
- magento - Magento点击从菜单项重定向
- odoo - 使用计算方法 Odoo12 在 one2many 字段中的值未更新
- php - 验证用户输入的 if 语句
- c# - 用户未处理参数超出范围异常
- php - 使用 php 添加和更新表
- r - 用于不同几何形状的两种色标
- python - 从还提到卧室数量的字符串中提取平方米的最佳方法是什么?