我想将映射应用于Pandas DataFrame,其中一个特定列中的某些行为NaN
。这些都是先前映射的结果。
mymap = defaultdict(str)
mymap["a"] = "-1 test"
mymap["b"] = "-2 test"
mymap["c"] = "-3 test"
df[ df["my_infos"].isnull() ] = df["something"].map(lambda ip: map_function(ip, mymap))
这是功能:
def map_function(ip, mymap):
# do stuff
for key, value in mymap.iteritems():
# do stuff
return stuff
return other_stuff
在迭代整个列之后终止,但显示:
文件 " /opt/anaconda2/lib/python2.7/site-packages/pandas/core/indexing.py" ;, 第527行,在_setitem_with_indexer中 提高ValueError('必须具有相等的len键和值' ValueError:使用可迭代设置时必须具有相等的len键和值
这是选择my_infos
列中NaN的所有行的正确方法吗?我不知怎的感觉......事实并非如此。
答案 0 :(得分:1)
我认为您可以为双方选择NaN
值,然后map
:
df[ df["my_infos"].isnull() ] =
df.ix[ df["my_infos"].isnull(), "something"].map(lambda ip: map_function(ip, mymap))