Pandas如何创建填充含right=np.inf的Interval的列?
解决DataFrame添加Interval列时的IntCastingNaNError错误
错误原因
直接将单个pd.Interval(0, np.inf)赋值给DataFrame列时,pandas会自动推断列类型,但由于Interval包含np.inf(非有限值),类型推断过程中触发了整数转换异常。
解决方案
以下几种方法可正确创建目标列:
方法1:用pd.Series生成重复Interval序列并指定类型
import seaborn as sns import pandas as pd import numpy as np tips = sns.load_dataset('tips') # 创建包含重复Interval元素的Series,指定interval类型 tips['new_col'] = pd.Series([pd.Interval(0, np.inf)] * len(tips), dtype='interval[float64]')
方法2:用IntervalArray批量生成
import seaborn as sns import pandas as pd import numpy as np tips = sns.load_dataset('tips') # 从两个等长数组创建IntervalArray tips['new_col'] = pd.IntervalArray.from_arrays([0]*len(tips), [np.inf]*len(tips))
方法3:用np.full快速生成填充值
import seaborn as sns import pandas as pd import numpy as np tips = sns.load_dataset('tips') # 生成全为目标Interval的数组,转成Series并指定类型 tips['new_col'] = pd.Series(np.full(len(tips), pd.Interval(0, np.inf)), dtype='interval')
这些方法通过明确指定列的interval类型,避免了pandas错误的类型推断,从而解决报错问题。
内容的提问来源于stack exchange,提问作者Probability is wonderful
相关产品推荐
相关产品推荐

