python - Pandas mul 密集与稀疏

标签 python pandas sparse-matrix

我有一个时间索引的 DataFrame,其中只有一部分数据是有效的(出于某些“外部”原因)。

我已经为有效数据制作了一个时间索引的Series 1 和数据无效的 NaN,所以我可以使用这是我的 DataFrame 上的掩码。

这个系列是稀疏的。

import pandas as pd
import numpy as np

rng = pd.date_range(start='2014-07-09', periods=5, freq='D')
data = np.random.randn(len(rng), 3)
col_names = ['spam', 'ham', 'eggs']    
df = pd.DataFrame(data=data, index=rng, columns=col_names)    
valid_days = np.nan * np.ones_like(df.spam.values)
valid_days[2] =  1    
validity_mask = pd.SparseSeries(data=valid_days, index=rng)

我期望 df.mul(validity_mask, axis=0) 给我一组非 NaN spam, ham, eggs,相反,我得到了:

In [2]: df.mul(validity_mask, axis=0)
AssertionError: length mismatch: 5 vs. 3

最佳答案

当然,答案是在乘法之前需要转换为dense

df.mul(validity_mask.to_dense(), axis=0)

给出预期的结果:

                spam       ham     eggs
2014-07-09       NaN       NaN      NaN
2014-07-10       NaN       NaN      NaN
2014-07-11  1.943166 -0.342399 -0.31517
2014-07-12       NaN       NaN      NaN
2014-07-13       NaN       NaN      NaN

我把它放在这里是因为我在 Pandas binary operations docs 中找不到任何关于显式转换的信息和 the Sparse data structure docs简单地说“在功能上,它们的行为应该与密集的对应物几乎相同。”

关于python - Pandas mul 密集与稀疏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653422/

相关文章:

python - 使用 Matplotlib 绘制散点图矩阵的刻度属性

c - 稀疏多维数据表示

python - Dataframe 的重复数据删除返回空对象

python - 如何通过强加于两列的多个条件删除 Pandas 数据框中的行?

python - 连接具有相同 id Pandas DataFrame 的列

matrix - 特征包迭代行主要稀疏矩阵

java - Android 中 SparseArrayCompat 政策不断增长背后的基本原理是什么?

python - 创建多项选择测验python

python - Jupyter 在 Mac 上安装失败

python - 神经网络 - 检查节点激活