假设我有一个dataframe,其中每第5行填充NA,如下所示:
| 数量|一个|B|C类|
| --------------|--------------|--------------|--------------|
| 四|二|1|0|
| 五|不适用|不适用|不适用|
| 六|五|六|七|
| 一百|三|五|二|
我想用第3行的值替换第5行的NA值。
到目前为止我尝试过的:
df.loc[df['Number'] % 5 == 0, ['A','B','C']] = df.loc[df['Number'] % 3 == 0, ['A','B','C']]
这种方法不会抛出任何错误,但它什么也不做。然而,如果我用一个常量替换赋值的右边,它工作得很好,就像这样:
df.loc[df['Number'] % 5 == 0, ['A','B','C']] = 3
有什么办法吗?
编辑:
我不想给予完整的原始任务,但是这个虚拟的例子有点错误。因此,让我们假设右侧的行数与左侧的行数相同。主要目标仍然是基于条件用 Dataframe 的子集替换每第五行的值。我希望这是一个更容易理解的一点,并为miscralification道歉。
2条答案
按热度按时间y3bcpkx11#
osh3o9ms2#
你的索引不对齐,这就是它不工作的原因:
Pandas无法在(1,3)和2之间对齐索引。解决方案是将右侧转换为numpy数组
.values
或.to_numpy()
。但是,如果您这样做,您也会更改第四行。更新:
所以让我们假设右侧的行数和左侧一样多
在这种情况下,用途: