【问题标题】:replace 2 selected row values based on others根据其他替换 2 个选定的行值
【发布时间】:2020-11-23 08:24:24
【问题描述】:

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

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

我想检查标签为Item 的所有Class条目。在这些类中,我想将所有出现的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

【问题讨论】:

    标签: python python-3.x pandas dataframe data-analysis


    【解决方案1】:

    DataFrame.loc& 的链2 条件一起使用按位AND - 这里是具有2 个值的分配列表,因为选择了2 列['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
    

    【讨论】:

    • 在此之后我尝试打印 df 或检查值计数,这些值似乎没有被替换
    • @a125 - 嗯,原因应该是一个或另一个面具不匹配,可以测试吗? df['m1'] = mask1df['m2'] = mask2print (df)
    猜你喜欢
    • 2021-02-20
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2021-10-28
    • 1970-01-01
    • 2013-10-29
    • 2016-06-10
    相关资源
    最近更新 更多