python - 根据标准用真值填充数据框
问题描述
我创建了一个数据框,其中列作为不同的文档,行作为这些文档的特征,如下所示:
还有更多文档和约 70 多个功能。我想将 NaN 值替换为 True 或保留为 NaN,具体取决于文档是否包含特征(行)。
认为:
t1_list = ['date', 'review_score']
然后,数据帧中 t1 下的前两行将显示为 True 和 course_id,其余行将通过检查t1_list
当前行的元素保持 NaN。
每个“文档”都有一个对应的列表,类似于上面列出的包含该文档特征的列表。我本质上只是创建一个带有 True/NaN 值的大型矩阵,以便轻松查看哪些文档包含或不包含相同的特征。因此,如果当前行名称包含在相应的列表中,则将 NaN 替换为 True。
解决方案
假设你有一个像这样的字典
features_per_doc = {"t1": ['date', 'review_score'], "t2": ['review_score'],\
"t3":['review_score', 'date', 'review_score']}
那么你可以这样做:
df.apply(lambda column: column.index.isin(features_per_doc[column.name]))
这将返回:
t1 t2 t3
date True False True
review_score True True True
course_id False False False
如果你想摆脱 Falses 那么你可以做
df.replace(False, pd.np.nan)
推荐阅读
- java - 使用本地主机在 Windows Server 2012 R2 上进行 Selenium 自动化测试
- typescript - 带有泛型的打字稿方法重载
- r - 为什么正常样本的直方图在模式附近比在尾部附近更粗糙?
- php - Laravel 重定向和验证错误
- javascript - 等待多个异步函数的承诺链等价物是什么?
- python - Python + Requests + Eve:发送数据到 post 失败,错误代码为 422
- javascript - 为什么 Protobuf JavaScript 编译器为集合添加“List”、“Map”等后缀?
- python - 请求有效载荷 - 上传图片
- python - 每次迭代更新字典,而不是整体更新
- django - 如何覆盖 GeoDjango GeoJSON Seriliazer 以包含模型属性