使用字典修改 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']}

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

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

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

您可以使用索引

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

我会做什么

s=pd.Series(d).explode()
s=pd.crosstab(s.index,s)
df.update(s.mask(s==1))
df
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

最新更新