熊猫从另一个数据帧中填充数据帧中的缺失值
答
如果你有两块形状相同的DataFrames,则:
df[df.isnull()] = d2
会做的伎俩。
只有在df.isnull()
计算为True
(绿色高亮显示)的位置将有资格获得分配。
实际上,DataFrame并不总是相同的大小/形状,并且转换方法(尤其是.shift()
)很有用。
进来的数据总是肮脏,不完整或不一致。参加课程。有一个相当广泛的熊猫tutorial and associated cookbook处理这些情况。
答
正如我刚才了解到,有一个DataFrame.combine_first()
方法,其目的正是这个,与附加属性,如果你的更新数据帧d2
是大于你原来df
,额外的行和列加,以及。
df = df.combine_first(d2)
答
DataFrame.combine_first()准确回答这个问题。
但是,有时要填充/替换/从数据帧B.这个问题把我带到这个网页值覆盖一些数据帧A的非缺失(非NAN)值的,解决的办法是DataFrame.mask()
A = B.mask(condition, A)
当condition
为真时,将使用来自A的值,否则将使用B的值。
例如,你可以解决了OP的原题与mask
这样,当从A的元素是不可楠,使用它,否则使用相应的元素,从B.
但使用DataFrame.mask()你可以更换A的值不符合任意标准(小于零?超过100?)与B的值。因此mask
更灵活,并且这个问题的矫枉过正,但我认为这是值得一提的(我需要它来解决我的问题)。
注意到B可能是一个numpy数组而不是DataFrame也很重要。 DataFrame.combine_first()要求B是数据框,但是DataFrame.mask()只要求B是NDFrame并且其尺寸与A的尺寸相匹配。
声音就像你想要合并。请显示一些示例场景。 – 2015-03-30 22:21:38
找到了!我想使用combine_first – user308827 2015-03-30 22:22:40
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.Series.combine_first.html – user308827 2015-03-30 22:22:43