【发布时间】:2018-03-14 13:26:54
【问题描述】:
我最近一直在玩熊猫,现在我尝试用不同的正态分布随机值替换数据框中的 NaN 值。
假设我有这个没有标题的 CSV 文件
0
0 343
1 483
2 101
3 NaN
4 NaN
5 NaN
我的预期结果应该是这样的
0
0 343
1 483
2 101
3 randomnumber1
4 randomnumber2
5 randomnumber3
但是我得到了以下内容:
0
0 343
1 483
2 101
3 randomnumber1
4 randomnumber1
5 randomnumber1 # all NaN filled with same number
到目前为止我的代码
import numpy as np
import pandas as pd
df = pd.read_csv("testfile.csv", header=None)
mu, sigma = df.mean(), df.std()
norm_dist = np.random.normal(mu, sigma, 1)
for i in norm_dist:
print df.fillna(i)
我正在考虑从数据框中获取 NaN 行的数量,并将 np.random.normal(mu, sigma, 1) 中的数字 1 替换为 NaN 行的总数,这样每个 NaN 可能具有不同的值。
但我想问有没有其他简单的方法可以做到这一点?
感谢您的帮助和建议。
【问题讨论】:
-
发布的解决方案是否适合您?
-
两种解决方案都运行良好。
标签: python pandas random normal-distribution