当我尝试将混合类型的序列制作成字典时,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}]
答案 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}]