我有一个 pandas df,其中每列都有一些数值,后面跟着一些 NaN。列之间的值和 NaN 数量不同。我想在特定列的“第一个非 NaN 位置”附加一个值。
我的 pandas df 看起来像这样:
A B C D
0 5 7 2 3
1 2 1 NaN 4
2 4 6 NaN 5
3 NaN 4 NaN 6
4 NaN 3 NaN NaN
5 NaN NaN NaN NaN
我想在特定列的底部添加(“附加”)一个值,例如,我想将“A”列中的第一个“NaN”更改为值“3”。期望的结果应该是:
A B C D
0 5 7 2 3
1 2 1 NaN 4
2 4 6 NaN 5
3 3 4 NaN 6
4 NaN 3 NaN NaN
5 NaN NaN NaN NaN
我想使用“append”,但它已被弃用。我尝试过“concat”,但我不想要一整行新数据,只想在单个列的底部附加一个值。
您可以
Series.fillna
使用limit=1
:输出:
另一种方法是使用
Series.isna
+Series.idxmax
并通过 分配df.loc
。在这里,您首先要检查是否isna
会产生任何True
值。如果没有,您将覆盖列中的第一个值:与你想要的相反的是(找到
Series.first_valid_index()
第一个非缺失值)。Pandas 没有“first_invalid_index ”(用于查找第一个缺失值),但在这种情况下我们可以使用.shift()
和.last_valid_index()
来完成相同的事情。结果:
我不确定我是否真的会推荐它,因为它看起来很脆弱——只是想给你提供选择。