<p>错误在于,当您迭代每个值时,它们是<code>float</code>而不是dataframe对象,因此<code>fill_na</code>将无法对其工作。我使用了与您的问题相同的想法,并创建了一个pandas lambda函数:</p>
<pre><code>import pandas as pd
import numpy as np
df_dict = {"Lower Confidence Interval":[1,2,2.5,6,5.5,np.nan, np.nan]}
df = pd.DataFrame.from_dict(df_dict)
</code></pre>
<p>输出:</p>
<pre><code>df
Lower Confidence Interval
0 1.0
1 2.0
2 2.5
3 6.0
4 5.5
5 NaN
6 NaN
</code></pre>
<p>其余代码如下:</p>
<pre><code>minimo = np.nanmin(df['Lower Confidence Interval'])
maximo = np.nanmax(df['Lower Confidence Interval'])
# Assuming you have done this. (Note: it makes it as float)
df.fillna(0, inplace=True)
def replace_na(x):
if x == float(0):
return np.random.choice([minimo, maximo])
else:
return x
df["Lower Confidence Interval"] = df["Lower Confidence Interval"].apply(replace_na)
</code></pre>
<p>替换列的最小值和最大值后,输出为:</p>
<pre><code>df
Out[15]:
Lower Confidence Interval
0 1.0
1 2.0
2 2.5
3 6.0
4 5.5
5 1.0
6 6.0
</code></pre>