Python向dataframe添加列会导致NaN
我有一个系列和dfPython向dataframe添加列会导致NaN,python,pandas,Python,Pandas,我有一个系列和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] 我得到了df 0-2 1-3 0 1 NaN 1 2 2.0 2 3 3.0 为什么我会变傻?我尝试使用正确的IDX创建新系列,但将其添加到df仍然会导致NaN 我想要的是 0-2 1-3 0
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]
我得到了df
0-2 1-3
0 1 NaN
1 2 2.0
2 3 3.0
为什么我会变傻?我尝试使用正确的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
索引时,它会在该位置的df
中放置一个NaN
值。您可以通过只保留这些值来绕过这个问题,这样它就不会试图在索引上匹配,或者在子集序列上重置索引
>>> 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。通过删除带有值的索引
调用,可以绕过产生NaN
的索引匹配。通过在第二个选项中重置索引,可以使索引相同。因此,也许我应该以某种方式重置索引?当然。您也可以使用以下内容s.iloc[1:4]。重置索引(drop=True)