在pandas数据帧中将数字和字母串转换为int/float

ast*_*st4 6 python pandas

我觉得必须快速解决我的问题,我使用多个列表推导法破解了一个实施不当的解决方案,这种方法并不理想.也许有人可以在这里帮忙.

我有一组值是字符串(例如3.2B,1.5M,1.1T),其中最后一个字符自然表示百万,十亿,万亿.在集合中还有NaN /'none'值,这些值应保持不变.我希望将它们转换为浮点数或整数,因此在给定的示例中(3200000000,1500000,1100000000000)

TIA

And*_*den 6

您可以创建一个函数:applymap它可以创建数据框中的每个条目:

powers = {'B': 10 ** 9, 'M': 10 ** 6, 'T': 10 ** 12}
# add some more to powers as necessary

def f(s):
    try:
        power = s[-1]
        return int(s[:-1]) * powers[power]
    except TypeError:
        return s

df.applymap(f)
Run Code Online (Sandbox Code Playgroud)