在pandas中设置索引

问题描述 投票:2回答:2

我正在研究与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 

请告诉我一个实现这个目标的正确方法。

python pandas
2个回答
3
投票

您可以使用正则表达式并替换为即可

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拆分并选择第一个元素,即

(

1
投票

分割得到两列,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]
© www.soinside.com 2019 - 2024. All rights reserved.