gpt4 book ai didi

python - 如何用另一行 Pandas 中的值替换一行中的 NaN

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:30 26 4
gpt4 key购买 nike

我尝试了几种方法将一行中的 NaN 替换为另一行中的值,但没有一种方法能按预期工作。这是我的数据框:

test = pd.DataFrame(
{
"a": [1, 2, 3, 4, 5],
"b": [4, 5, 6, np.nan, np.nan],
"c": [7, 8, 9, np.nan, np.nan],
"d": [7, 8, 9, np.nan, np.nan]
}
)

a b c d
0 1 4.0 7.0 7.0
1 2 5.0 8.0 8.0
2 3 6.0 9.0 9.0
3 4 NaN NaN NaN
4 5 NaN NaN NaN

我需要用第一行的值替换第 4 行的 NaN,即

   a     b     c     d
0 1 **4.0 7.0 7.0**
1 2 5.0 8.0 8.0
2 3 6.0 9.0 9.0
3 4 **4.0 7.0 7.0**
4 5 NaN NaN NaN

第二个问题是如何将一行中的某些/部分值乘以一个数字,例如,当列为 ['b', 'c' 时,我需要将后两个值加倍, 'd'],则结果为:

   a     b     c     d
0 1 4.0 7.0 7.0
1 2 **10.0 16.0 16.0**
2 3 6.0 9.0 9.0
3 4 NaN NaN NaN
4 5 NaN NaN NaN

最佳答案

首先,我建议您阅读一下 Indexing and selecting data在 Pandas 。关于第一个问题,您可以使用 .loc()isnull()对列值执行 bool 索引:

mask_nans = test.loc[3,:].isnull()
test.loc[3, mask_nans] = test.loc[0, mask_nans]

要将值加倍,您可以直接将切片数据框乘以 2,同时使用 .loc() :

test.loc[1,'b':] *= 2

a b c d
0 1 4.0 7.0 7.0
1 2 10.0 16.0 16.0
2 3 6.0 9.0 9.0
3 4 4.0 7.0 7.0
4 5 NaN NaN NaN

关于python - 如何用另一行 Pandas 中的值替换一行中的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com