我有一个pandas数据框,其中包含日期格式的列#34; 2016-05-03"这些是字符串btw。我需要将它们从字符串转换为int并在连字符处拆分(' - ')并且只提取年份所以[0]。
这是我试图将字符串转换为整数:
tyc.startDate = tyc.startDate.astype(np.int64)
但它正在回归并且错误:
ValueError:带有基数10的int()的无效文字:' 2015-06-01'
这就是我为分裂而做的事情:
tyc.startDate.str.split('-')[0]
和
tyc.startDate.str.split('-', [0])
但这也不起作用,它会拆分并返回此表单中列中所有行的列表: [' 2015',' 06',' 01']我想分开一年!
我确定有一种简单的方法可以转换为int并在位置0拆分(' - ')然后将其作为新列放入df,请帮助!
答案 0 :(得分:0)
您可以使用apply:
def mod_strings(date_str):
try:
return int(date_str.split('-')[0])
except (AttributeError, IndexError): # in case value is not as
# expected returning original value
return date_str
tyc.startDate = tyc.startDate.apply(mod_strings)
但是简单地将整个列从字符串转换为日期对象然后使用tyc.startDate = tyc.startDate.dt.year
(假设pandas版本> = 0.16)可能更容易