我有一个类型难题:

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 的情况下取两个系列中的最小值?

最佳答案

我认为您可以通过 reindex union 使用 indexes ,参数 fill_valueNaN 替换为一些标量。您需要 min ,因此一种可能的解决方案是一些巨大的 int ,例如 10000maxSeries :

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

关于python - 最少两个 uint64 系列,没有 float64 转换的缺失值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42481084/

10-12 23:53