【问题标题】:Converting multiple types of values to integer values将多种类型的值转换为整数值
【发布时间】:2021-06-09 15:08:45
【问题描述】:

我有一个 Pandas DF,我想在其中将列值转换为整数值。信息应该以米为单位存储,但也可以以公里为单位存储,从而产生以下可能的值:

23145 (correct)
23145.0 (.0 should be removed)
101.1 (should be multiplied *1000)
47,587 (should be multiplied *1000)
'No value known'

我尝试了不同的转换数据类型的选项,但我似乎总是破坏现有的整数并且无法正确检查它们,因为类型“对象”是 dtype。有时错误的值或字符串也会阻止转换。

任何想法如何检查当前值是否为整数并且什么都不做,从适用的值中删除 .0 并在适用的情况下相乘。

我还有其他一些带有整数的列(例如数字 22321323),其中随机分配了一个 .0(例如数字 22321323.0)。如何正确地将这些值转换为不包含 .0?

【问题讨论】:

    标签: pandas csv integer


    【解决方案1】:

    如果您在列上使用 .apply,您应该能够非常轻松地转换这些值,同时对它们的类​​型进行大小写。例如:

    import pandas as pd
    def convert(x):
        if isinstance(x, int):
            return x
        elif isinstance(x, float):
            return int(x)
        else:
            # Defaults to 0 when not convertable
            return 0
        print(x)
    
    df = pd.DataFrame({'col': [23145, 23145.0, 'No value known']})
    df['col'] = df['col'].apply(convert)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2020-11-09
      • 2019-05-09
      • 2016-05-24
      相关资源
      最近更新 更多