制作字典时,Pandas仍将int转换为float

时间:2019-05-28 13:13:58

标签: python pandas

当我尝试将混合类型的序列制作成字典时,Pandas仍然使int变成浮点数。

建议的解决方法对我不起作用。我尝试过转换为对象并使用iteritems和两者。我正在使用熊猫版本0.24.2

test_series = pd.Series([1,1.3])
result = [{index:value} for index,value in test_series.astype(object).iteritems()]
print (results)

预期:

[{0: 1}, {1: 1.3}]

实际:

[{0: 1.0}, {1: 1.3}]

3 个答案:

答案 0 :(得分:3)

您可以使用函数 is_integer()来检查浮点数是否为整数

test_series = pd.Series([int(1),1.3])
results = [{index:int(value)} if value.is_integer() else {index:value} for index,value in test_series.iteritems()]
print (results)

出:

[{0: 1}, {1: 1.3}]

答案 1 :(得分:2)

尝试在字典理解中使用modulo运算符%if-else语句:

result = [{i: int(x)} if x % 1 == 0 else {i: x} for i, x in test_series.iteritems()]

[出]

[{0: 1}, {1: 1.3}]

答案 2 :(得分:2)

使用is_integer方法:

test_series = pd.Series([1,1.3])
result = [{k: int(v) if v.is_integer() else v for k,v in test_series.astype(object).items()}]
print (result)
[{0: 1, 1: 1.3}]