首页 > 解决方案 > 在 Pandas 中将小数值转换为小数

问题描述

我有一个数据混乱的数据框。

df:
    1        2        3
--  -------  -------  -------
 0  123/100  221/100  103/50
 1  49/100   333/100  223/50
 2  153/100  81/50    229/100
 3  183/100  47/25    31/20
 4  2.23     3.2      3.04
 5  2.39     3.61     2.69

我希望将小数值转换为十进制,转换公式为

例如:

计算是fractional value + 1

当然,保持十进制值不变。

我如何在 Pandas 和 Python 中做到这一点?

标签: pythonpandasdataframeoperators

解决方案


一个简单的方法是首先定义一个转换函数,该函数将应用于列中的每个元素:

def convert(s):
    if '/' in s: # is a fraction
        num, den = s.split('/')
        return 1+(int(num)/int(den))
    else:
        return float(s)

然后使用该.apply函数通过此函数运行列的所有元素:

df['1'] = df['1'].apply(convert)

结果:

df['1']:

0    2.23
1    1.49
2    2.53
3    2.83
4    2.23
5    2.39

然后根据需要在任何其他列上重复。


推荐阅读