给定一个pd.Series
,我想用一个列表替换空值。也就是说,给定以下条件:
import numpy as np
import pandas as pd
ser = pd.Series([0,1,np.nan])
我想要一个可以返回
0 0
1 1
2 [nan]
但是如果我尝试使用自然函数,即fillna
result = ser.fillna([np.nan])
但是我得到了一个错误
TypeError:"value“参数必须是标量或字典,但您传递了一个"list”
有什么简单的方法可以解决这个问题吗?
发布于 2017-11-13 23:06:31
使用apply
,因为fillna
仅处理标量:
print (ser.apply(lambda x: [np.nan] if pd.isnull(x) else x))
0 0
1 1
2 [nan]
dtype: object
发布于 2017-11-13 23:23:10
您可以更改为object
ser=ser.astype('object')
然后分配列表np.nan
ser.loc[ser.isnull()]=[[np.nan]]
发布于 2020-07-15 16:12:21
我最终使用了
ser.loc[ser.isnull()] = ser.loc[ser.isnull()].apply(lambda x: [np.nan])
因为pd.isnull(x)会给出模棱两可的真值错误(我在我的系列中也有其他列表)。这是YOBEN_S和jezrael的答案的结合。
https://stackoverflow.com/questions/47267375
复制相似问题