至少两个uint64系列,缺少值而没有float64转换

时间:2017-02-27 08:37:02

标签: python pandas

我有类型难题:

import pandas as pd

a = pd.Series([5, 3, 5], index=[1, 3, 4])  # int64
b = pd.Series([1, 9, 4], index=[1, 2, 4])  # int64

m = pd.DataFrame([a, b]).min()             # float64

我确切知道为什么会发生这种情况:一旦我将ab放在同一个数据框中,就会有缺失的值,并且int64中无法表示缺失的值,所以dtype被提升到float64。但我真的希望在没有转换的情况下达到最低限度。有没有办法预先填写其他列中的缺失值,或任何其他技术可以让我在不必处理NaN的情况下采用两个系列中的最小值?

1 个答案:

答案 0 :(得分:3)

我认为您可以reindex使用union fill_value {{3}},参数NaNmin替换为某个标量。您需要int,因此一个可能的解决方案是10000 maxSeries idx = b.index.union(a.index) print (pd.DataFrame([a.reindex(idx, fill_value=a.max()), b.reindex(idx, fill_value=b.max())])) 1 2 3 4 0 5 5 3 5 1 1 9 9 4 m = pd.DataFrame([a.reindex(idx, fill_value=a.max()), b.reindex(idx, fill_value=b.max())]).min() print (m) 1 1 2 5 3 3 4 4 dtype: int64 的巨大{{1}}:

{{1}}