Python将NAN更改为零向量

2024-03-29 13:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中有个问题。我使用doc2vec建立一个段落向量,并将其转换为时间序列。所以我有一个索引,它是日期,然后是8家公司,每天每个公司都有一个维数为100的向量来代表新闻文章。但是,有些日子没有文章,它们返回NaN值。现在我想把它们转换成维数为100的零向量。在

我试着用下面的代码片段做到这一点:

test_df.fillna(value=np.zeros(100) , inplace = True)  

但是,这不起作用,因为我不能用列表或数组替换NaN。有办法解决这个问题吗?在

非常感谢!在


Tags: 代码testdf文章时间公司代表序列
4条回答

或许你可以试试:

zeros = np.zeros(100)
series.apply(lambda x: x if isinstance(x,np.ndarray) else zeros)

例如,这是什么样子的(只有长度为2的向量来保持清晰):

^{pr2}$

如果您的数据在数据帧中,那么applymap的类似模式应该可以工作:

df = pd.DataFrame({'company_a': {1:np.array([1,2]), 2: np.nan, 3: np.array([3,4])}, 'company_b': {1:np.nan, 2: np.array([9,7]), 3: np.nan}})
df

  company_a company_b
1    [1, 2]       NaN
2       NaN    [9, 7]
3    [3, 4]       NaN

zeros = np.zeros(2)
df = df.applymap(lambda x: x if isinstance(x,np.ndarray) else zeros)
df

    company_a   company_b
1      [1, 2]  [0.0, 0.0]
2  [0.0, 0.0]      [9, 7]
3      [3, 4]  [0.0, 0.0]

相关问题 更多 >