【发布时间】:2019-01-30 00:03:43
【问题描述】:
我正在处理一些客户邮政编码数据无效的数据。结果,我无法将 CountryISOCode 映射到他们的邮政编码,从而导致 NaN。但是,我注意到对于所有带有 NaN 的 CountryISOCodes,CurrencyCode 可以为我提供足够的信息来暂时解决问题。
我已经阅读了各种 Stackoverflow 文章,但找不到解决问题的方法。我试过了……
def func(row):
if row['CountryISOCode'] == np.nan & row['Currency'] == 'EUR':
return 'IRE'
elif row['CountryISOCode'] == np.nan & row['Currency'] == 'GBP':
return 'GBR'
else:
return row['CountryISOCode']
df['CountryISOCode'] = df.apply(func, axis=1)
还有其他一些方法,但无济于事......
下面我提供了我正在使用的数据的复制
import pandas as pd
import numpy as np
data = [
['Steve', 'Invalid Postcode', 'GBP', np.nan ],
['Robyn', 'Invalid Postcode', 'EUR', np.nan],
['James', 'Valid Postcode', 'GBP', 'GBR'],
['Halo', 'Invalid Postcode', 'EUR', np.nan],
['Jesus', 'Valid Postcode', 'GBP', 'GBR']
]
df = pd.DataFrame(columns=["Name", "PostCode", "CurrencyCode", "CountryISOCode"], data=data)
基本上,如果我使用 SQL,我的代码将如下所示。
IF countryISOCode IS NULL
AND currency = ‘GBP’
THEN CountryISOCode = ‘GBR’
ELSE
IF countryISOCode IS NULL
AND currency = ‘EUR
THEN CountryISOCode = ‘IRE’
ELSE countryISOCode
END
有什么想法吗?
【问题讨论】:
-
您是否尝试将
&更改为and?两者有区别,我想你想在这里使用and。您可以在此处查看更多关于差异的信息 [stackoverflow.com/questions/22646463/… -
代码使用
and运行,但似乎无法解决问题。数据保持不变。