pandas DataFrame转换为Series时y列出现NaN值是什么原因?
问题原因
你调用pd.Series()时传入的df.y本身是自带默认整数索引(索引值为0、1)的Series对象,额外指定index=df.ds时,pandas会自动执行索引对齐逻辑:用新传入的时间格式索引去匹配原有df.y的整数索引,二者完全无法匹配,最终返回的结果就全为NaN。
解决方案
方法1:提取列的原始值构建Series
取df.y的底层数值数组,避免带入原有索引参与对齐:
data = [['2021-10-14 18:12:00.000', '22811316'],['2021-10-14 18:42:00.000', '22700704']] df = pd.DataFrame(data, columns = ['ds', 'y']) series = pd.Series(df.y.values, index=df.ds)
输出结果:
ds 2021-10-14 18:12:00.000 22811316 2021-10-14 18:42:00.000 22700704 Name: y, dtype: object
方法2:通过设置索引直接转换(更推荐)
直接将ds列设为DataFrame的索引后提取y列,无需手动构建Series,逻辑更简洁:
series = df.set_index('ds')['y']
输出结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者Sameer Mahajan
相关产品推荐
相关产品推荐

