【问题标题】:How to update row information with new list in python如何在python中使用新列表更新行信息
【发布时间】:2021-04-13 06:22:51
【问题描述】:
   Number  Country Region
0    5381   London   Asia
1    7357  Romania     EU

我想更改区域信息。例如对于罗马尼亚、米兰、西班牙、意大利,它将更改为欧盟。同样,伦敦和英国也将改为英国。

【问题讨论】:

  • 你能提供更多细节吗?你都尝试了些什么?您如何存储这些数据?您正在做什么来选择更改 - 您是否有需要进行更改的列表?
  • df.loc[df['Country'] == 'Italy', ['Region']] = 'Pasta' 我试过了,但它只改变了一条记录,我想改变多条记录例如 {'Italy','Spain','Milan' : 'EU'} 所以对于这 3 个国家,它将更改为 EU,{'London','xyz' : 'United Kingdom'} 像这样我想更改信息

标签: python pandas list dataframe dictionary


【解决方案1】:

pandas.apply 听起来很适合这个操作。

import pandas as pd

columns_list = ['Number', 'Country', 'Region']

data_list = [
    [5381, 'London', 'Asia'],
    [7357, 'Romania', 'EU'],
    [1234, 'Italy', 'EU'],
]

df = pd.DataFrame(data=data_list, columns=columns_list)

region_update_dict = {
    'London': 'United Kingdom',
    'Italy': 'Pasta Land'
}


def region_update_lambda(row):
    row_country = row['Country']
    row_region = row['Region']
    try:
        updated_region = region_update_dict[row_country]
    except KeyError:
        updated_region = row_region
    return updated_region


df['New Region'] = df.apply(lambda row: region_update_lambda(row), axis=1)
print(df)
#    Number  Country Region      New Region
# 0    5381   London   Asia  United Kingdom
# 1    7357  Romania     EU              EU
# 2    1234    Italy     EU      Pasta Land

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多