Pandas中DataFrame添加向量Series列时仅存储NaN问题求助
问题原因
创建Series s时未指定索引,它会自动使用默认整数索引[0,1,2],而DataFrame df的索引是["one", "two", "three"]。Pandas赋值时遵循索引对齐规则,s中没有与df匹配的索引项,因此新列c只能填充NaN。
解决办法
以下是几种可行的处理方式:
方法1:创建Series时指定与df一致的索引
让s的索引和df完全匹配,赋值时就能正确对齐数据:
s = pd.Series([(i*10, i*11, i*12) for i in df["a"]], index=df.index, dtype=object) df.loc[:, "c"] = s
方法2:直接使用Series的values属性赋值
跳过索引对齐逻辑,直接取s的底层值数组赋值:
df["c"] = s.values
或者用loc方式:
df.loc[:, "c"] = s.values
方法3:用assign方法添加新列
通过assign方法直接生成包含新列的DataFrame:
df = df.assign(c=s.values)
内容的提问来源于stack exchange,提问作者Honza S.
相关产品推荐
相关产品推荐

