我希望对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", line 527, in _setitem_with_indexer raise ValueError('Must have equal len keys and value ' ValueError: Must have equal len keys and value when setting with an iterable
这是选择 my_infos
列中所有 NaN 行的正确方法吗?我总感觉... 不是这样。
df.loc[ df["my_infos"].isnull() ] = df.loc[df['my_infos'].isnull(), "something"].map(lambda ip: map_function(ip, mymap))
问题在于您只遮蔽了左侧而没有遮蔽右侧,因此形状不匹配。 - EdChum