如何将一系列字符串从pandas列转换为整数

时间:2017-08-10 11:41:29

标签: python pandas split int

我有一个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,请帮助!

1 个答案:

答案 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)可能更容易