Python 当我制作字典时,Pandas仍然将int转换为float

Python 当我制作字典时,Pandas仍然将int转换为float,python,pandas,Python,Pandas,当我试图将一个混合类型系列编入字典时,Pandas仍然将int转换成float 建议的解决办法对我不起作用。我试着使用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}, {

当我试图将一个混合类型系列编入字典时,Pandas仍然将int转换成float

建议的解决办法对我不起作用。我试着使用
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}]
在听写理解范围内,尝试使用运算符
%
if-else
语句:

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


您可以使用函数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}]
使用方法:

[{0: 1}, {1: 1.3}]
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}]