【问题标题】:Python Pandas - Cleaning data column depending on multiple criteriaPython Pandas - 根据多个条件清理数据列
【发布时间】:2020-03-18 00:08:11
【问题描述】:

我有以下代码来创建一个列,其中包含美国和加拿大的已清理邮政编码

df = pd.read_csv(file1)
usa = df['Region'] == 'USA'
canada = df['Region'] == 'Canada'
df.loc[usa, 'ZipCleaned'] = df.loc[usa, 'Zip'].str.slice(stop=5)
df.loc[canada, 'ZipCleaned'] = df.loc[canada, 'Zip'].str.replace(' |-','') 

问题在于,某些以“美国”作为国家/地区的行在数据集中包含加拿大邮政编码。因此,上面的美国逻辑被应用于加拿大邮政编码。

我尝试了下面的编辑代码以及上面的代码,并尝试了一个省(“BC”)以防止在这种情况下应用美国逻辑,但它不起作用

usa = df['Region'] == 'USA' and df['Ship To State'] != 'BC'

【问题讨论】:

  • 我希望创建一个包含所有省份的列表,这样如果国家是美国但省份是加拿大,则不会应用美国逻辑。

标签: python pandas conditional-statements data-cleaning


【解决方案1】:

下面的代码解决了这个问题

df.loc[~df['Ship To Customer Zip'].str.contains('[A-Za-z]'), 'ZipCleaned'] = df['Ship To Customer Zip'].str.slice(stop=5)
df.loc[df['Ship To Customer Zip'].str.contains('[A-Za-z]'), 'ZipCleaned'] = df['Ship To Customer Zip'].str.replace(' |-','')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 2020-12-14
    • 2020-08-11
    • 2020-11-21
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多