将地图应用于NaN的DataFrame行

时间:2016-10-11 12:50:34

标签: python pandas

我想将映射应用于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的所有行的正确方法吗?我不知怎的感觉......事实并非如此。

1 个答案:

答案 0 :(得分:1)

我认为您可以为双方选择NaN值,然后map

df[ df["my_infos"].isnull() ] = 
df.ix[ df["my_infos"].isnull(), "something"].map(lambda ip: map_function(ip, mymap))