首页 > 解决方案 > 根据标准用真值填充数据框

问题描述

我创建了一个数据框,其中列作为不同的文档,行作为这些文档的特征,如下所示:
在此处输入图像描述

还有更多文档和约 70 多个功能。我想将 NaN 值替换为 True 或保留为 NaN,具体取决于文档是否包含特征(行)。

认为:

t1_list = ['date', 'review_score']

然后,数据帧中 t1 下的前两行将显示为 True 和 course_id,其余行将通过检查t1_list当前行的元素保持 NaN。
每个“文档”都有一个对应的列表,类似于上面列出的包含该文档特征的列表。我本质上只是创建一个带有 True/NaN 值的大型矩阵,以便轻松查看哪些文档包含或不包含相同的特征。因此,如果当前行名称包含在相应的列表中,则将 NaN 替换为 True。

标签: pythonpandasdataframe

解决方案


假设你有一个像这样的字典

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)

推荐阅读