【发布时间】:2021-04-19 19:45:04
【问题描述】:
我在 Python 中有一个数据框,其中一列描述了不同的时间格式。
不同的格式是
- NaN
- 只有那一年
- 年、月
- 年、月、日
我无法将它转换为日期时间,因为它的日期早于 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 我认为我的第二行有问题,但我不知道为什么
【问题讨论】:
-
你用什么来做到这一点?什么语言?
-
很抱歉,在 Python 中
-
也许将第一个字符 '-' 更改为任何字符,例如 '#',然后拆分,然后将其改回。这是更“正则表达式”的懒惰方式,但有效。或者只是先对其进行测试,如果存在,则设置一个符号“标志”(变量),删除,然后拆分,然后将其添加回来(如果设置了标志)。
-
不确定你需要多少功能,如果不需要的话,也许你可以滚动你自己的类,在年/月/日之间转换为整数,然后使用位掩码等返回规范字符串。跨度>
-
在将其输入
pandas之前,将其作为预处理会更容易。我看到太多人试图与pandas进行较量,以进行使用 Python 字符串很容易完成的处理。
标签: python string date integer