我有2个具有相同列和索引的 Dataframe 。
a a
1 [] 1 [5,2,7]
2 [1,2,3] 2 [1,2,3,4]
3 [7] 3 [7,5]
我想使用条件合并它们,当列表长度〈=1时,取值并将其添加到第一个 Dataframe ,否则保留旧值。
所以在那之后的结果是:
a
1 [5,2,7]
2 [1,2,3]
3 [7,5]
最好的方法是什么?
3条答案
按热度按时间jucafojl1#
oiopk7p52#
下面是一种使用
pandas.DataFrame.mask
的方法。首先,确保每个 Dataframe /列的值都是列表:
然后,使用
pandas.Series.str.len
:或者使用
pandas.Series.transform
:#输出:
hmmo2u0o3#
您可以使用
numpy.where()
来评估条件并返回所需的版本。在这个解决方案中,我将两个列表组合起来,然后转换成一个集合来删除重复项,然后再转换回一个列表,因为我相信这是您最后想要的。请注意,这确实会改变元素(您可以使用
[2,5,7]
代替[5,2,7]
)