我有类型难题:
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
的情况下采用两个系列中的最小值?
答案 0 :(得分:3)
我认为您可以reindex
使用union
fill_value
{{3}},参数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
的巨大{{1}}:
{{1}}