我有一个类型难题:
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
我确切地知道它为什么会发生:一旦我将
a
和 b
放在同一个数据帧中,就会出现缺失值,并且缺失值无法在 int64
中表示,因此 dtype 被提升到 float64
。但我真的很想在没有转换的情况下获得最低限度。有没有办法预先填充另一列中的缺失值,或者任何其他技术可以让我在不必处理 NaN
的情况下取两个系列中的最小值? 最佳答案
我认为您可以通过 reindex
的 union
使用 indexes
,参数 fill_value
将 NaN
替换为一些标量。您需要 min
,因此一种可能的解决方案是一些巨大的 int
,例如 10000
或 max
的 Series
:
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/