Nan值在python中的列中

时间:2017-09-28 15:56:37

标签: python pandas nan

我有一个基于其他数据集创建的数据集。在我的新数据中,一些列具有nan值。我想在每列上做一个日志。但是我需要所有行,即使它们具有Nan值。在应用日志之前,我应该如何处理Nan值?例如,请考虑以下数据集:

a    b     c
1    2     3
4    5     6
7    nan   8
9    nan   nan

我不想删除带有nan值的行。我需要它们来登录它们。

例如,我需要在第6行中使用值7和8。 感谢。

1 个答案:

答案 0 :(得分:3)

在计算每个单独的单元格时,nan不会影响日志。更重要的是,np.log具有将在pd.DataFrame上运行并返回pd.DataFrame

的属性
np.log(df)

          a         b         c
0  0.000000  0.693147  1.098612
1  1.386294  1.609438  1.791759
2  1.945910       NaN  2.079442
3  2.197225       NaN       NaN

注意时间差异

%timeit np.log(df)
%timeit pd.DataFrame(np.log(df.values), df.index, df.columns)
%timeit df.applymap(np.log)

134 µs ± 5.51 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
107 µs ± 1.79 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
835 µs ± 12.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

对@IanS的反应

请注意documentation

中的subok=True参数

它控制是否保留原始类型。如果我们将其转为False

np.log(df, subok=False)

array([[ 0.        ,  0.69314718,  1.09861229],
       [ 1.38629436,  1.60943791,  1.79175947],
       [ 1.94591015,         nan,  2.07944154],
       [ 2.19722458,         nan,         nan]])