首页 > 解决方案 > 熊猫从数据框中的浮点数中获取十进制小数部分

问题描述

如何从数据框中的浮点数(float64)中提取小数部分?(一个非常常见的场景,但我在 StackOverFlow 中找不到解决方案)

注意:要小心196.09,我需要09,不是9

示例数据框:

    dollars Count
0   56.46   2
1   196.09  3
2   78.12   2

预期结果是 2 位小数:

    decimal
0   46
1   09
2   12

标签: python-3.xpandasdataframefloating-point

解决方案


使用numpy.modf, 多重 by100并强制转换为integers:

df['decimal'] = (np.modf(df['dollars'])[0] * 100).astype(int)

split通过.

df['decimal'] = df['dollars'].astype(str).str.split('.').str[1].astype(int)

print (df)
   dollars  Count  decimal
0    56.46      2       46
1   196.69      3       68
2    78.12      2       12

编辑:如果需要09格式需要第二个解决方案 - 输出是strings:

df['decimal'] = df['dollars'].astype(str).str.split('.').str[1]
print (df)
   dollars  Count decimal
0    56.46      2      46
1   196.09      3      09
2    78.12      2      12

推荐阅读