将序列分配给数据帧列时的新 null



我不明白为什么在将数据帧列分配为最初没有任何空值的系列后会弹出新的空值。下面是一个示例:

df.date_col.shape回报 (100000,(
df.date_col.isnull().sum()返回 0

然后,我创建一个相同大小的新系列:

new_series = pd.Series([int(d[:4]) for d in df.date_col]) new_series.shape回报 (100000,(
new_series.isnull().sum()返回 0

但是,如果我尝试将此新系列分配给原始列:

df.date_col = new_series df.date_col.isnull().sum()返回 6328

有人可以告诉我这里可能发生了什么吗?

IIUC,你的索引不继续,当你创建pd.Series时,它会自动将索引从0分配给len(s(-1,数据帧分配是基于索引的,索引未命中匹配将创建NaN

df=pd.DataFrame({'col':[1,2,3]},index=[1,2,3])

s=pd.Series([d*2 for d in df.col])
df['New']=s
df
Out[170]:
   col  New
1    1  4.0
2    2  6.0
3    3  NaN

df['New2']=s.values
df
Out[172]: 
   col  New  New2
1    1  4.0     2
2    2  6.0     4
3    3  NaN     6

相关内容

  • 没有找到相关文章

最新更新