无法使用带有负索引的大熊猫从日期列中切片年份

问题描述 投票:0回答:1

我有一个简单的数据集,其中有一个Dates列,我想从中提取年份。我正在使用负索引来获取年份

d0 ['Year'] = d0 ['Dates']。apply(lambda x:x [-1:-5])

这通常是有效的,但是不适用于此。将创建一个空白列。我对列中的一些数据进行了采样,发现没有奇数字符。我尝试了以下变体

d0 ['Year'] = d0 ['Date']。apply(lambda x:str(x)[-1:-5])#列已创建,并且为空白。

d0 ['Year'] = d0.Dates.str.extract('\ d {4}')#给出错误“ ValueError:模式不包含捕获组”

d0 ['Year'] = d0 ['Dates']。apply(lambda x:str(x).replace('[^ a-zA-Z0-9 _-]','a')[-1: -5])#same-给出空白列

真的不确定我还有什么其他选择,问题出在哪里。可能是什么问题?

下面是我拥有的数据的样本转储

[暴发,日期,地区,龙卷风,伤亡,注意事项2000年乔治亚州西南部龙卷风爆发,“ 2000年2月13日至14日”,乔治亚州,17,18日,造成了一系列强烈而致命的龙卷风袭击了卡米拉,梅格斯和佐治亚州的欧米茄及其周围地区。较弱的龙卷风影响了其他州。”2000年沃思堡龙卷风,“ 2000年3月28日”,美国South,10,2,“小规模爆发导致F3袭击了德克萨斯州的沃思堡市中心,严重破坏了摩天大楼并杀死了两座摩天大楼。另一场F3对阿灵顿和大草原造成了重大破坏。”2000年复活节星期天龙卷风爆发,“ 2000年4月23日”,“俄克拉荷马州,得克萨斯州,路易斯安那州,阿肯色州”,33,0,“ 2000布雷迪,内布拉斯加州龙卷风”,“ 2000年5月17日”,内布拉斯加州,1,0,“高度拍照的F3在内布拉斯加州布雷迪附近经过。”2000 Granite Falls龙卷风,“ 2000年7月25日”,“明尼苏达州Granite Falls”,1,1,“ F4袭击Granite Falls,造成重大破坏并造成一人死亡。”

pandas datetime slice
1个回答
0
投票

从“日期”列中提取年份,作为对象类型使用

da['Year'] = da['Dates'].apply(lambda x: x[-4:]) 

如果您想将其用作int,则可以在完成上述步骤后执行以下操作]

da['Year']=pd.to_numeric(da['Year'])
© www.soinside.com 2019 - 2024. All rights reserved.