【问题标题】:Remove scientific notation from pandas column containing both string and float从包含字符串和浮点数的 pandas 列中删除科学记数法
【发布时间】:2018-11-22 20:28:06
【问题描述】:

我无法从包含字符串和非字符串条目的列中删除科学记数法。

当我使用 read_csv 导入数据集时,其中一列显示以下内容:

0           1.9157E+11
11          1.9157E+11
12          1.9157E+11
13          1.9157E+11
14          1.9157E+11
         ...      
37444    19156794-1005
37445    19156794-1004
37446      19156791023
37447    19156794-1003
37448    19156794-1003

虽然所有条目都编码为字符串,但有些行只包含数字(因此它们被转换为科学计数法),而有些行包含“-”(因此它们可以正确显示)。

当我打印dataframe['column'][11] 时,我得到'1.9157E+11',这是一个字符串。

我无法将apply(float) 用于整个列,因为某些条目包含“-”,因此无法转换为字符串。

也有人问过this question,但 OP 遇到了同样的问题(请参阅解决方案下的 cmets)并且没有得到解决。

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    如果您需要转换所有可转换的值并保持其他不变,您可以使用以下代码:

    def try_float(x):
        try:
            return float(x)
        except ValueError as e:
            return x
    
    series.apply(try_float)
    

    【讨论】:

    • 有没有办法在 lambda 函数中写这个?只是好奇
    • @johnconnor92 不,但that 可能会帮助你
    • 好的,谢谢!问题解决了。我还不熟悉使用'except'子句,这就是为什么我不知道如何编写这个函数。
    • @johnconnor92 try-catch 语法并不难。该函数运行try 代码,如果它得到ValueError,它运行except ValueError 代码。
    猜你喜欢
    • 2021-04-21
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多