将多种类型的值转换为整数值

Converting multiple types of values to integer values

我有一个 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'

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

任何想法如何检查当前值是否为整数并且什么也不做,从适用值中删除 .0 并在适用的地方乘以。

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

如果您在列上使用 .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)