如何基于多个值的条件替换值

2024-10-08 19:21:10 发布

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

我有一个包含多个列的数据框,下面是该数据框中的前3列:

data_df = pd.DataFrame({'id':['era','bb','cs','jd','ek','gtf','okg','huf','mji','loj','djjf','wloe','rfm','cok'],
                        'doc':[1050 ,580,170,8, 7, 220, 45155,305,458,201,48,78,256,358],
                       'dif':[1,1,1,3,3,2,2,3,4,5,8,7,9,10]})
data_df
    id    doc      dif
0   era   1050     1    
1   bb    580      1    
2   cs    170      1    
3   jd    8        3    
4   ek    7        3    
5   gtf   220      2    
6   okg   45155    2    
7   huf   305      3    
8   mji   458      4    
9   loj   201      5    
10  djjf  48       8    
11  wloe  78       7    
12  rfm   256      9    
13  cok   358      10

我想更改“dif”列中的值,就像更改相反的值一样。我的意思是我想把1改成10,2改成9,3改成8,。。。。10比1。我该怎么做? 我试着像下面这样做,但我无法确定下次要更正哪些值

data_df.loc[(data_df.dif == 1),'dif']= 10
data_df['dif'].mask(data_df['dif'] == 2, 9, inplace=True)

任何帮助都将不胜感激。提前谢谢


Tags: 数据iddfdatacsjdgtfbb
3条回答
new_df = data_df.assign(dif=11 - data_df['dif'])

或者,如果您想在适当的位置执行此操作:

data_df['dif'] = 11 - data_df['dif']

其实很简单:

>>> data_df["dif"] = 11 - data_df["dif"]
>>> data_df
      id    doc  dif
0    era   1050   10
1     bb    580   10
2     cs    170   10
3     jd      8    8
4     ek      7    8
5    gtf    220    9
6    okg  45155    9
7    huf    305    8
8    mji    458    7
9    loj    201    6
10  djjf     48    3
11  wloe     78    4
12   rfm    256    2
13   cok    358    1

或将11替换为data_df["dif"].max() + 1

创建映射的dict-

dict1 = dict(zip(range(1, 11), range(10,0,-1)))
data_df['dif'] = data_df['dif'].map(dict1)

相关问题 更多 >

    热门问题