将系列分配给dataframe列时的新null

时间:2018-01-02 22:18:24

标签: python pandas dataframe 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

有人请告诉我这里可能会发生什么吗?

1 个答案:

答案 0 :(得分:1)

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