我有以下数据框:
// Switch tinting
Toggle(isOn: $order.notifyWhenReady) {
Text("Send notification when ready")
}
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
我使用正则表达式来获取年份。
Name Year
DC_FY19.csv [19]
NC_FY18.csv [18]
AK_FY18_of_19.csv [18,19]
有没有办法让一年成为2019年,2018年的格式。
答案 0 :(得分:2)
假设所有年份都在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
答案 1 :(得分:0)
在DataFrame中存储列表通常不是一个成功的主意,但是由于您已经这样做了,因此每年只需增加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]