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