首页 > 解决方案 > 根据其他替换 2 个选定的行值

问题描述

我有一个看起来像这样的df:

Id     Class               Label
0      APPS                Item
1      MODEL               Item
2      PRICE               Money

我想检查Class标签所在的所有条目Item。在这些类中,我想APPS用另一个字符串替换所有出现的 ,OTHERS并希望将Label这些行的 替换为另一个字符串,例如SOFTWARE 我怎样才能实现这一点?我正在尝试这样的事情:

def changeLabelClass(label):
    if (label == "")
    
mask = modifiedDf['Label'] == "Item"
modifiedDf.loc[mask, 'Class'] = [changeLabelClass(x) for x in modifiedDf.loc[mask, 'Class']]

结果:

Id     Class               Label
0      OTHERS              SOFTWARE
1      MODEL               Item
2      PRICE               Money

标签: pythonpython-3.xpandasdataframedata-analysis

解决方案


按位DataFrame.loc与链 2 条件一起使用- 这里是分配有 2 个值的列表,因为选择了 2 列:&AND['Class', 'Label']

mask1 = df['Label'] == "Item"
mask2 = df['Class'] == "APPS"

df.loc[mask1 & mask2, ['Class', 'Label']] = ['OTHERS','SOFTWARE']
print (df)
   Id   Class     Label
0   0  OTHERS  SOFTWARE
1   1   MODEL      Item
2   2   PRICE     Money

推荐阅读