我正在用同一 Dataframe 中的另一列更新 Dataframe 中缺失的值。但我不明白这种行为。
0 1 2
0 NaN 0.076733 0.378676
1 NaN 0.223911 NaN
2 NaN 0.173071 0.534397
3 NaN 0.991686 0.381196
4 0.088309 0.237683 0.003508
5 0.751860 0.494204 0.757413
6 0.630420 0.192947 0.538492
我正在用column 0
系列更新column 1
和column 2
。
df.fillna(df[1])
我希望它与标签索引对齐,但它填充的是来自序列的标量值,而不是序列本身。
0 1 2
0 0.076733 0.076733 0.378676
1 0.076733 0.223911 0.173071
2 0.076733 0.173071 0.534397
3 0.076733 0.991686 0.381196
4 0.088309 0.237683 0.003508
5 0.751860 0.494204 0.757413
6 0.630420 0.192947 0.538492
**编辑:**我希望它输出如下:
0 1 2
0 0.076733 0.076733 0.378676
1 0.223911 0.223911 0.223911
2 0.173071 0.173071 0.534397
3 0.991686 0.991686 0.381196
4 0.088309 0.237683 0.003508
5 0.751860 0.494204 0.757413
6 0.630420 0.192947 0.538492
有人能解释一下这是怎么回事吗?
重新编辑我发现了一种Pandas遵循我想做的事情的方法--为每一列传递一个字典,这看起来相当冗长。
df.fillna({0:df[1],2:df[1]})
2条答案
按热度按时间vh0rcniy1#
指定方法和轴
这就行了
对于任意列
fsi0uk1n2#
根据第一列(第0列a.k.a
df[0]
)填写NA。因此,如果第一列中有NA,它将被df [0]第一行的值替换,在示例中,该值将为0.895575。
对于第二列(
df[1]
)中的NA,它使用指定列的第二行(df[0]
,第一列)。因此,所有NA都用0.522721填充对于第三列(
df[2]
)中的NA,它使用指定列的第三行(df[0]
,第一列)。因此,所有NA都用0.012833填充希望这有帮助!
编辑:我怀疑geekay's solution将实现您的预期:
填充方向(方法="填充",轴= 1)