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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将系列分配给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

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

答案

IIUC,你的索引没有继续,当你创建pd.Series时,它自动分配索引从0到len(s)-1,dataframe assign是基于索引,索引未命中匹配将创建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

以上是关于将系列分配给dataframe列时的新null的主要内容,如果未能解决你的问题,请参考以下文章

PySpark。将 Dataframe 传递给 pandas_udf 并返回一个系列

将 Spark DataFrame 写入 Hive 表时的内存分配问题

无法使用系列设置熊猫列值,而是将所有内容都设置为np.nan

将列名分配给熊猫系列

从监督学习数据集中删除列时的奇怪值

将本地变量分配给属性时的内存泄漏弧