我有一个熊猫DataFrame看起来像:
ID | StateName | ZipCode
____________________________________
0 MD 20814
1 90210
2 DC 20006
3 05777
4 12345
我有一个函数,它将基于ZipCode值填充StateName:
def FindZip(x):
search = ZipcodeSearchEngine()
zipcode = search.by_zipcode(x)
return zipcode['State']
我想根据相应的ZipCode的值填写StateName列中的空白。我尝试失败了:
test['StateName'] = test['StateName'].apply(lambda x: FindZip(test['Zip_To_Use']) if x == "" else x)
基本上,我想将功能应用于不同于我要更改的列的列。我将不胜感激任何帮助!谢谢!
最佳答案
您可以尝试以下操作:
test['StateName'] = test.apply(lambda x: FindZip(test['Zip_To_Use'])
if x['StateName'] == ""
else x['StateName'], axis = 1)
上面的代码适用于数据框而不是
StateName
,并且使用axis = 1
适用于列。更新:
在
if
语句中使用多个条件进行了更新(查看下面的解决方案):test['StateName'] = test.apply(lambda x: FindZip(test['Zip_To_Use'])
if ((x['StateName'] == "") and (x['Zip_To_Use'] != ""))
else x['StateName'], axis = 1)