gpt4 book ai didi

python - 如何仅返回一个具有特定值的 na 值

转载 作者:行者123 更新时间:2023-11-28 22:09:25 27 4
gpt4 key购买 nike

我想回填na,但我只想回填一个na值,并用特定值(1)替换那个值

我试过用

df.fillna(value=1,method='bfill',inplace=True,limit=1)

但是我明白了

ValueError: Cannot specify both 'value' and 'method'.

因为我不能同时使用方法和值。如果这是可能的,我就不会问这个问题( Pandas 可能应该通过新的更新来研究这个问题)

这是一个例子:

import pandas as pd
import numpy as np

col1 = [3,2,2,np.nan,np.nan,np.nan,2,6,np.nan,np.nan,np.nan,6]
col2 = [8,2,np.nan,np.nan,6,0,np.nan,5,np.nan,6,6,3]
col3 = [np.nan,np.nan,np.nan,np.nan,6,7,np.nan,1,np.nan,np.nan,3,4]
df = pd.DataFrame(data=[col1,col2,col3],columns=['col1','col2','col3'])

print(df)

index col1 col2 col3
0 3 8 np.nan
1 2 2 np.nan
2 2 np.nan np.nan
3 np.nan np.nan np.nan
4 np.nan 6 6
5 np.nan 0 7
6 2 np.nan np.nan
7 6 5 1
8 np.nan np.nan np.nan
9 np.nan 6 np.nan
10 np.nan 6 3
11 6 3 4

这是我想要的输出:

index     col1     col2     col3
0 3 8 np.nan
1 2 2 np.nan
2 2 np.nan np.nan
3 np.nan 1 1
4 np.nan 6 6
5 1 0 7
6 2 1 1
7 6 5 1
8 np.nan 1 np.nan
9 np.nan 6 1
10 1 6 3
11 6 3 4

我已经在这里工作了几个小时。不胜感激!

最佳答案

你可以 bfill 限制为 1,无论哪个值。然后检查哪个值已填充,但在原始数据框中仍为 NaN 。您填写的那些索引1:

d = df.bfill(limit=1)
mask = df.isna() & d.notna()

df = pd.DataFrame(np.where(mask, 1, df), columns=df.columns)

输出

    col1  col2  col3
0 3.0 8.0 NaN
1 2.0 2.0 NaN
2 2.0 NaN NaN
3 NaN 1.0 1.0
4 NaN 6.0 6.0
5 1.0 0.0 7.0
6 2.0 1.0 1.0
7 6.0 5.0 1.0
8 NaN 1.0 NaN
9 NaN 6.0 1.0
10 1.0 6.0 3.0
11 6.0 3.0 4.0

关于python - 如何仅返回一个具有特定值的 na 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697712/

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