Python 熊猫-用两个不同的值替换NaN

Python 熊猫-用两个不同的值替换NaN,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我正在尝试替换数据帧中的NaN值。 我想用一个值替换60%的NaN,用另一个值替换40%。 我阅读了fillna方法的文档,但没有找到 有什么想法吗 谢谢您可以这样做: df.loc[your_condition_for_60%] = df.fillna(10) df.loc[your_condition_for_40%] = df.fillna(20) 创建一个布尔数组,该数组有可能为60/40真/假,大小与正在填充的df相同。然后先使用combine\u import pandas as

我正在尝试替换数据帧中的NaN值。 我想用一个值替换60%的NaN,用另一个值替换40%。 我阅读了fillna方法的文档,但没有找到

有什么想法吗


谢谢

您可以这样做:

df.loc[your_condition_for_60%] = df.fillna(10)
df.loc[your_condition_for_40%] = df.fillna(20)

创建一个布尔数组,该数组有可能为60/40真/假,大小与正在填充的df相同。然后先使用
combine\u

import pandas as pd
import numpy as np

df = pd.DataFrame(index=list('ABCDEFGHIJ'), columns=list('abcdefghij'))

mask60 = np.random.rand(*df.shape) > 0.6

value40, value60 = 10, 20

fill = value60 * mask60 + value40 * (1 - mask60)

fill = value40 + mask60 * (value60 - value40)

fill_df = pd.DataFrame(fill, index=df.index, columns=df.columns)
看起来像:

print df.combine_first(fill_df)

    a   b   c   d   e   f   g   h   i   j
A  10  10  20  20  10  10  10  10  10  20
B  10  10  10  10  10  20  20  10  10  10
C  20  10  10  10  10  10  10  20  20  20
D  10  10  10  20  10  10  20  10  10  10
E  20  20  10  10  20  10  10  10  20  10
F  10  20  10  10  20  10  20  10  10  20
G  20  20  10  10  10  10  10  20  20  10
H  10  10  20  20  10  10  10  10  10  10
I  10  10  10  20  20  10  10  10  10  20
J  10  10  10  20  10  10  20  10  10  10
在提问时,尽量提供一个简短的回答。如果是熊猫问题,请提供示例输入和输出数据集(CSV/dict/JSON/Python代码格式的5-7行作为文本,因此在为您编写答案时可以使用它)。这将有助于避免以下情况:
您的代码对我无效
它对我的数据无效
,等等。