【问题标题】:Set index in pandas在熊猫中设置索引
【发布时间】:2017-09-20 13:31:19
【问题描述】:

我正在研究与 this 相关的 Olympics 数据集

这是数据框的样子:

                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


【解决方案1】:

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

df = df.replace('\(.+?\)|\[.+?\]\s*','',regex=True).rename(columns={'Unnamed: 0':'Country'}).set_index('Country')

输出:

夏天01! 02! 03!整个冬天 国家 阿富汗 13 0 0 2 2 0 阿尔及利亚 12 5 2 8 15 3 阿根廷 23 18 24 28 70 18 亚美尼亚 5 1 2 9 12 6 大洋洲 2 3 4 5 12 0

如果你不想重命名,那么.set_index('Unnamed: 0')

或者感谢@Scott 一个更简单的解决方案是按( 拆分并选择第一个元素,即

df['Unnamed: 0'] = df['Unnamed: 0'].str.split('\(').str[0] 

【讨论】:

  • 非常感谢。在思考如何拆分或使用正则表达式时遇到了麻烦。说清楚了!
  • df['Unnamed: 0'] = df['Unnamed: 0'].str.split('\(').str[0]
  • @ScottBoston 很抱歉我没看到\( 那里。我太固执了。
【解决方案2】:

拆分得到两列,countryCountry Code 并将国家设置为索引:

df2 = pd.DataFrame(df.Unnamed.str.split(' ',1).tolist(), columns = ['Country', 'countryCode']).set_index('Country')

您还可以在数据框中添加国家代码作为附加信息。

删除多余的东西,我想像:[ANZ],使用正则表达式(如其他答案中所述)

df2 = df2.replace('\[.*?\]','', regex=True)

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 2017-05-03
    • 2017-05-07
    • 2016-06-29
    • 2020-04-05
    • 1970-01-01
    • 2018-06-03
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多