基于另一列中的值将多列设置为零

2024-06-28 20:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我这里有一个示例数据集。在实际情况中,它有一个训练和测试数据集。它们都有大约300列和800行。我想根据一列中的某个值过滤掉所有这些行,然后将该行中从第3列到第50列的所有值设置为零。我怎么做

Sample dataset:

import pandas as pd 

data = {'Name':['Jai', 'Princi', 'Gaurav','Princi','Anuj','Nancy'], 
    'Age':[27, 24, 22, 32,66,43], 
    'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Katauj', 'vbinauj'], 
'Payment':[15,20,40,50,3,23],
    'Qualification':['Msc', 'MA', 'MCA', 'Phd','MA','MS']} 

df = pd.DataFrame(data) 
df

以下是示例数据集的输出:

    Name    Age   Address    Payment    Qualification
0   Jai     27     Delhi      15          Msc
1   Princi  24     Kanpur     20          MA
2   Gaurav  22     Allahabad  40          MCA
3   Princi  32     Kannauj    50          Phd
4   Anuj    66     Katauj     3           MA
5   Nancy   43     vbinauj    23          MS

如您所见,在第一列中,这些值==“Princi”,因此,如果我找到名为column value==“Princi”的行,那么我希望将这些行中的列“Address”和“Payment”设置为零

以下是预期输出:

    Name    Age   Address    Payment    Qualification
0   Jai     27     Delhi      15          Msc
1   Princi  24     0          0           MA     #this row
2   Gaurav  22     Allahabad  40          MCA
3   Princi  32     0          0           Phd     #this row
4   Anuj    66     Katauj     3           MA
5   Nancy   43     vbinauj    23          MS

在我的真实数据集中,我尝试:

    train.loc[:, 'got':'tod']# get those columns # I could select all those columns
and train.loc[df['column_wanted'] == "that value"] # I got all those rows

但是我怎样才能把它们结合起来呢?谢谢你的帮助


Tags: 数据nameageaddresspaymentmadelhianuj
1条回答
网友
1楼 · 发布于 2024-06-28 20:31:28

使用loc访问器df.loc[boolean selection, columns]

df.loc[df['Name'].eq('Princi'),'Address':'Payment']=0



      Name  Age    Address  Payment Qualification
0     Jai   27      Delhi       15           Msc
1  Princi   24          0        0            MA
2  Gaurav   22  Allahabad       40           MCA
3  Princi   32          0        0           Phd
4    Anuj   66     Katauj        3            MA
5   Nancy   43    vbinauj       23            MS

相关问题 更多 >