如何将列表转换为年度

2024-05-19 10:52:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

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年进入一年


Tags: ofcsv数据lambdanameredfdc
2条回答

在数据框中存储列表通常不是一个好主意,但既然您已经这样做了,每年只需添加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

相关问题 更多 >

    热门问题