2024-04-19 18:55:49 发布
网友
我的数据框中有一列(称为“FY”),它的财政年度值的格式为:2015/2016或2016/2017。你知道吗
2015/2016
2016/2017
我想把整个列转换成15/16或者16/17等等。你知道吗
15/16
16/17
我猜你只是从字符串中提取了第3、4、5个字符,以及第8、9个字符,但不知道怎么做。你知道吗
有人能帮我吗?非常感谢。你知道吗
下面是使用此示例数据集的另一种方法:
df fy 0 2015/2016 1 2016/2017 2 2017/2018 df['fy_new'] = df['fy'].str[2:4] + '/' + df['fy'].str[7:9] df fy fy_new 0 2015/2016 15/16 1 2016/2017 16/17 2 2017/2018 17/18
给定一个字符串date = "2015/2016",您可以执行以下操作来获得15/16:
date = "2015/2016"
left, right = date.split('/')
从字符串中删除除最后2个字符以外的所有字符:
new_left = left[-2:] new_right = right[-2:]
new_date = new_left+'/'+new_right
编辑:基于其他答案,直接与数据帧一起工作的一行解决方案:
df['new'] = df['fy'].str.split('/')[0][-2:] +'/'+ df['fy'].str.split('/')[1][-2:]
这是一种更通用的方法,因为它适用于长度不同的字符串,只获取最后2个字符,防止错误索引的错误,并防止您硬编码它们(即使您的日期可能总是每个有4个字符加上“/”,至少在未来8000年)
选项1 使用pd.Series.str.replace
pd.Series.str.replace
df.FY.str.replace('\d{2}(\d{2}/)\d{2}(\d{2})', r'\1\2') 0 15/16 1 16/17 Name: FY, dtype: object
选项2 使用pd.DataFrame.replace
pd.DataFrame.replace
df.replace(dict(FY={'\d{2}(\d{2}/)\d{2}(\d{2})': r'\1\2'}), regex=True) FY 0 15/16 1 16/17
下面是使用此示例数据集的另一种方法:
给定一个字符串
date = "2015/2016"
,您可以执行以下操作来获得15/16
:left, right = date.split('/')
捕获两个单独的日期从字符串中删除除最后2个字符以外的所有字符:
new_date = new_left+'/'+new_right
合并成一个字符串编辑:基于其他答案,直接与数据帧一起工作的一行解决方案:
这是一种更通用的方法,因为它适用于长度不同的字符串,只获取最后2个字符,防止错误索引的错误,并防止您硬编码它们(即使您的日期可能总是每个有4个字符加上“/”,至少在未来8000年)
选项1
使用
pd.Series.str.replace
选项2
使用
pd.DataFrame.replace
相关问题 更多 >
编程相关推荐