熊猫-具有小数位数的列

时间:2019-08-26 19:06:58

标签: python pandas

我有一个带有以下列(dtype ='O')的数据框:

OUTPUT
1
0
3e-09
NaN
0.4
5.67

并想为数字小于0的小数位数添加新列:

OUTPUT   DECIMAL_PLACES
1         0
0         0
3e-09     9
NaN       NaN
0.4       1
5.67      0

我已经天真地尝试将其转换为字符串,然后转换为split('。'),但科学记法并不喜欢它。注意:我有一个很大的数据集,要看一看科学计数法在哪里并不容易。

1 个答案:

答案 0 :(得分:3)

从本质上讲,这是-log10操作。例如:

>>> -np.floor(np.log10(df['data']))
0   -0.000000
1         inf
2    9.000000
3         NaN
4    1.000000
Name: data, dtype: float64

0映射到inf上。但是我们可以稍后解决。例如:

df['places'] = -np.floor(np.log10(df['data']))
df.loc[np.isinf(df['places']), 'places'] = 0

这给我们:

>>> df
           data  places
0  1.000000e+00    -0.0
1  0.000000e+00     0.0
2  3.000000e-09     9.0
3           NaN     NaN
4  4.000000e-01     1.0