如何使用 pandas 将一列的随机行插入到另一列?`

问题描述 投票:0回答:1

预先感谢您的帮助和时间。

相关信息如下:

ASIA
AFGHANISTAN  5,000       JORDAN  1,188        SAUDI ARABIA  619
BAHRAIN  8                KUWAIT  162          

AFRICA
ALGERIA 5,142              ERITREA  211        MOZAMBIQUE  7
ANGOLA  582                ESWATINI  2         NAMIBIA  10

使用pandas,如何对

Asia
列中的亚洲国家和
African
列中的非洲国家进行排序?

如何将国家/地区名称与数字分开以便稍后求和。

我尝试从网页复制该信息并将其粘贴到excel中,然后用pandas读取它,但我得到的只是下面的介绍,无法进行任何操作:

AFRICA                   Unnamed: 1                           Unnamed: 2
0     ALGERIA  5,142      ERITREA  211                        MOZAMBIQUE  7
1        ANGOLA  582       ESWATINI  2                          NAMIBIA  10
pandas dataframe web-scraping pycharm data-cleaning
1个回答
0
投票

最简单的方法是创建一个完成这项工作的函数

import pandas as pd
import re

data_asia = [
    "AFGHANISTAN 5,000",
    "BAHRAIN 8",
    "JORDAN 1,188",
    "KUWAIT 162",
    "SAUDI ARABIA 619"
]

data_africa = [
    "ALGERIA 5,142",
    "ANGOLA 582",
    "ERITREA 211",
    "ESWATINI 2",
    "MOZAMBIQUE 7",
    "NAMIBIA 10"
]

def separate_countries_numbers(data):
    countries = []
    numbers = []
    for item in data:
        split_data = re.split(r'\s(?=\d)', item)
        country = split_data[0]
        number = split_data[1].replace(",", "")  
        countries.append(country)
        numbers.append(int(number))
    return pd.DataFrame({"Country": countries, "Number": numbers})

df_asia = separate_countries_numbers(data_asia)
df_africa = separate_countries_numbers(data_africa)

df_asia, df_africa

返回

(        Country  Number
 0   AFGHANISTAN    5000
 1       BAHRAIN       8
 2        JORDAN    1188
 3        KUWAIT     162
 4  SAUDI ARABIA     619,
       Country  Number
 0     ALGERIA    5142
 1      ANGOLA     582
 2     ERITREA     211
 3    ESWATINI       2
 4  MOZAMBIQUE       7
 5     NAMIBIA      10)
© www.soinside.com 2019 - 2024. All rights reserved.