首页 > 解决方案 > 使用字典修改 dfs 值

问题描述

我有一个这样的df:

      xx   yy   zz
 A    6     5    2
 B    4     4    5
 B    5     6    7
 C    6     6    6
 C    7     7    7

然后我有一个字典,其中包含一些键(对应于 df 的索引名称)和值(列名):

{'A':['xx'],'B':['yy','zz'],'C':['xx','zz']}

我想使用字典来检查那些未出现在 dict values 中的列名是否设置为零以生成此输出:

      xx   yy   zz
 A    6     0    0
 B    0     4    5
 B    0     6    7
 C    6     0    6
 C    7     0    7

我如何使用字典来生成所需的输出?

标签: pythonpandasdataframe

解决方案


您可以使用索引

mask = (pd.DataFrame(d.values(), index=d.keys())
          .stack()
          .reset_index(level=1, drop=True)
          .str.get_dummies()
          .groupby(level=0).sum()
          .astype(bool)
        )

df[mask].fillna(0)

    xx   yy   zz
A  6.0  0.0  0.0
B  0.0  4.0  5.0
B  0.0  6.0  7.0
C  6.0  0.0  6.0
C  7.0  0.0  7.0

推荐阅读