将系列分配给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 表时的内存分配问题