Python向数据框添加列会导致NaN

2024-04-22

我有一个系列和 df

s = pd.Series([1,2,3,5])
df = pd.DataFrame()

当我像这样向 df 添加列时

df.loc[:, "0-2"] = s.iloc[0:3]
df.loc[:, "1-3"] = s.iloc[1:4]

I get df

   0-2  1-3
0    1  NaN
1    2  2.0
2    3  3.0

为什么我得到 NaN?我尝试使用正确的 idx 创建新系列,但将其添加到 df 仍然会导致 NaN。

我想要的是

   0-2  1-3
0    1  2
1    2  3
2    3  5

尝试以下任一行。

df.loc[:, "1-3"] = s.iloc[1:4].values
# -OR-
df.loc[:, "1-3"] = s.iloc[1:4].reset_index(drop=True)

您的原始代码尝试匹配数据框的索引失败df到子集系列的索引s.iloc[1:4]。当它找不到时0该系列中的索引,它放置了NaN值在df在那个位置。您可以通过仅保留值来解决此问题,这样它就不会尝试匹配索引或重置子集系列上的索引。

>>> s.iloc[1:4]
1    2
2    3
3    5
dtype: int64

请注意索引值,因为原始的未子集化系列如下。

>>> s
0    1
1    2
2    3
3    5
dtype: int64

第一行的索引df是 0。通过删除索引values调用时,您绕过了产生的索引匹配NaN。通过重置第二个选项中的索引,可以使索引相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python向数据框添加列会导致NaN 的相关文章

随机推荐