将多种类型的值转换为整数值
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)
我有一个 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)