首页 > 解决方案 > 如何根据列值填充所有值?

问题描述

想象一下,您有以下 df:

dffinalselection

        description#1   description#2 lacheck   taxrate#1
    0   NaN             NaN           5           Res
    1   138.81         105.91         67          Rofus
    12  74.16           4.34          55          Rennie

现在我想根据 lacheck / taxrate#1 的组合值填写 description#1 和 #2。这需要迭代和可扩展地完成,因为描述可能长达十个。

于是编造了以下代码。

dffinalselection['LineDescription'] = dffinalselection['lacheck'] + "-" + dffinalselection['taxrate#1'] 

filldescparty = dffinalselection.filter(like='description')

df[filldescparty].fillna(dffinalselection['LineDescription'], inplace = True)

dffinalselection.update(filldescparty)

但是,收到以下错误:

ValueError: Boolean array expected for the condition, not object

所需的输出:

        description#1   description#2 lacheck   taxrate#1
    0   5 -Res          5 -Res            5           Res
    1   67 - Res        67 - Res         67       Rofus
    12  55 - Rennie     55 - Rennie       55      Rennie

标签: pythonpandasnumpy

解决方案


我们能试试assign

line = df['lacheck'].astype(str) + '-' + df['taxrate#1']
cols = df.filter(like='description')

df.assign(**dict.fromkeys(cols, line))

   description#1 description#2  lacheck taxrate#1
0          5-Res         5-Res        5       Res
1       67-Rofus      67-Rofus       67     Rofus
12     55-Rennie     55-Rennie       55    Rennie

推荐阅读