我正在研究与this相关的奥运会数据集
这就是数据框的样子:
Unnamed: 0 # Summer 01 ! 02 ! 03 ! Total # Winter \
0 Afghanistan (AFG) 13 0 0 2 2 0
1 Algeria (ALG) 12 5 2 8 15 3
2 Argentina (ARG) 23 18 24 28 70 18
3 Armenia (ARM) 5 1 2 9 12 6
4 Australasia (ANZ) [ANZ] 2 3 4 5 12 0
我想做以下事情:
例如,更新的列应为:
Unnamed: 0 # Summer 01 ! 02 ! 03 ! Total # Winter \
0 Afghanistan 13 0 0 2 2 0
1 Algeria 12 5 2 8 15 3
2 Argentina 23 18 24 28 70 18
3 Armenia 5 1 2 9 12 6
4 Australasia 2 3 4 5 12 0
请告诉我一个实现这个目标的正确方法。
您可以使用正则表达式并替换为即可
df = df.replace('\(.+?\)|\[.+?\]\s*','',regex=True).rename(columns={'Unnamed: 0':'Country'}).set_index('Country')
输出:
Summer 01 ! 02 ! 03 ! Total Winter Country Afghanistan 13 0 0 2 2 0 Algeria 12 5 2 8 15 3 Argentina 23 18 24 28 70 18 Armenia 5 1 2 9 12 6 Australasia 2 3 4 5 12 0
如果你不想重命名那么qazxsw poi
或者感谢.set_index('Unnamed: 0')
一个更容易的解决方案是通过@Scott拆分并选择第一个元素,即
(
分割得到两列,df['Unnamed: 0'] = df['Unnamed: 0'].str.split('\(').str[0]
和country
并将国家设置为索引:
Country Code
您还可以在数据框中添加国家/地区代码作为附加信息。
正如我想的那样删除多余的东西:df2 = pd.DataFrame(df.Unnamed.str.split(' ',1).tolist(), columns = ['Country', 'countryCode']).set_index('Country')
,使用正则表达式(如其他答案中所述)
[ANZ]