从列中提取国家名称和年份,并在数据帧中创建一个新列



在以下情况下:

1
sxIndia-2021 23
dfr_Australia-1987
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

相关内容

  • 没有找到相关文章