首页 > 解决方案 > 当在 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 我认为我的第二行有问题但我不知道为什么

标签: pythonstringdateinteger

解决方案



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'])


推荐阅读