在以下情况下:
源 | 值 |
---|---|
sxIndia-2021 | 23 |
dfr_Australia-1987 | 1|
df_fg-Africa-2022 | 34 |
更新
df[['Country', 'Year']] = pd.DataFrame(df['Source'].str.split(r'[_-]').str[-2:].tolist())
print(df)
# Output
Source Value Country Year
0 sx_India-2021 23 India 2021
1 dfr_Australia-1987 21 Australia 1987
2 df_fg-Africa-2022 34 Africa 2022
用途:
pat = r'[_-](?P<Country>[^-]*)-(?P<Year>d{4})'
df = pd.concat([df, df['Source'].str.extract(pat)], axis=1)
print(df)
# Output
Source Value Country Year
0 sx_India-2021 23 India 2021
1 dfr_Australia-1987 21 Australia 1987
2 df_fg-Africa-2022 34 Africa 2022
如果您不需要Source
列,请使用:
df = pd.concat([df.pop('Source').str.extract(pat), df], axis=1)
print(df)
# Output
Country Year Value
0 India 2021 23
1 Australia 1987 21
2 Africa 2022 34
IIUC,您可以使用str.extract
:
df['Source'].str.extract(r'([^-_]+)-d+$', expand=False)
输出:
0 India
1 Australia
2 Africa
Name: Source, dtype: object
国家和年份:
df[['Country', 'Year']] = df['Source'].str.extract('([^-_]+)-(d+)$')
输出:
Source Value Country Year
0 sx_India-2021 23 India 2021
1 dfr_Australia-1987 21 Australia 1987
2 df_fg-Africa-2022 34 Africa 2022