2024-05-19 10:52:50 发布
网友
我有以下数据帧:
Name Year DC_FY19.csv [19] NC_FY18.csv [18] AK_FY18_of_19.csv [18,19]
我用正则表达式来表示年份
df['Year'] = df.Name.apply(lambda x: re.findall(re'[0-9]+',x)
有没有办法让2019年、2018年进入一年
在数据框中存储列表通常不是一个好主意,但既然您已经这样做了,每年只需添加2000个:
df.Year.apply(lambda years: [2000+year for year in years]) #0 [2019] #1 [2018] #2 [2018, 2019]
如果年份是字符串,而不是数字(示例中不清楚),请使用字符串算术:
df.Year.apply(lambda years: ["20"+year for year in years]) #0 [2019] #1 [2018] #2 [2018, 2019]
最后,如果您有一列字符串,请使用直接替换:
df.Year.replace('(\d\d)', r'20\1', regex=True) #0 [2019] #1 [2018] #2 [2018,2019]
假设您所有的年份都在2000年,并且假设您希望将其作为列表保存,您可以使用以下代码:
df['Year'] = df.Name.apply(lambda x: list(map(lambda x: "20"+x, re.findall('[0-9]+',x)))) Out: Name Year 0 DC_FY19.csv [2019] 1 NC_FY18.csv [2018] 2 AK_FY18_of_19.csv [2018, 2019]
如果希望将其作为字符串而不是列表,请使用以下命令:
df['Year'] = df.Name.apply(lambda x: ', '.join(map(lambda x: "20"+x, re.findall('[0-9]+',x)))) Out: Name Year 0 DC_FY19.csv 2019 1 NC_FY18.csv 2018 2 AK_FY18_of_19.csv 2018, 2019
在数据框中存储列表通常不是一个好主意,但既然您已经这样做了,每年只需添加2000个:
如果年份是字符串,而不是数字(示例中不清楚),请使用字符串算术:
最后,如果您有一列字符串,请使用直接替换:
假设您所有的年份都在2000年,并且假设您希望将其作为列表保存,您可以使用以下代码:
如果希望将其作为字符串而不是列表,请使用以下命令:
相关问题 更多 >
编程相关推荐