根据条件设置2个以上的值,python

根据条件设置2个以上的值,python,python,pandas,numpy,Python,Pandas,Numpy,我有一个如下所示的数据帧: Nickname Vpip% Pfr% Agg Hands 0 -2dV2dA- 25.675676 16.666667 1.187500 222 1 06Hookd 26.470588 16.176471 1.000000 68 2 0spiel2632 23.794212 17.363344 0.750000 311 3 10P

我有一个如下所示的数据帧:

        Nickname      Vpip%       Pfr%       Agg  Hands
0       -2dV2dA-  25.675676  16.666667  1.187500    222
1        06Hookd  26.470588  16.176471  1.000000     68
2     0spiel2632  23.794212  17.363344  0.750000    311
3        10Pet10  23.214286   7.142857  1.000000     56
4      12022015a  75.000000        NaN       NaN      4
5      17bastian  31.034483   6.896552  1.000000     29
6      1990shawn  26.666667   6.666667  0.500000     15
7      199376966  66.666667  25.000000  1.000000     12
8     1MILKSHAKE  75.000000  50.000000       NaN      4
9    1nheritance  30.136986  20.547945  1.000000     73
10      2016deal  63.076923  12.307692  1.142857     65
11        26tj26  43.589744  30.769231  1.333333     39
12     2SMUG4YOU  70.000000  20.000000  1.000000     10
13          320t  71.074380  38.842975  1.410256    121
14    4cheeze126  52.205882  34.926471  0.900000    272
15      67bishop  19.148936   2.127660  1.000000     47
16    777aprilia  23.076923  15.384615       NaN     13
17   77gost77129  17.241379  14.942529       NaN     87
18         7r3m5  19.942197  16.473988  1.111111    346
19  888sharkbait  50.000000  30.769231  0.750000     26
我想根据值再增加一列。 我使用的是np.where来设置值,但它只能设置2个值,这取决于条件。 我需要提出很多价值观。 我试着用np.where来做,但它互相替换

Data['Badge'] = np.where((Data['Hands'] > 30) & (Data['Vpip%'] <= 18.0), 'Rock', np.nan)
Data['Badge'] = np.where((Data['Hands'] > 30) & (Data['Vpip%'] > 60.0), 'Whale', np.nan)
Data['Badge'] = np.where((Data['Hands'] > 30) & (Data['Vpip%'] <= 60.0) & ((Data['Vpip%'] > 40.0)), 'Fish', np.nan)
Data['Badge'] = np.where((Data['Hands'] > 30) & (Data['Vpip%'] <= 40.0) & ((Data['Vpip%'] > 27.0) & (Data['Agg'] < 2.0)), 'Loose Passive', np.nan)
Data['Badge'] = np.where((Data['Hands'] > 30) & (Data['Vpip%'] <= 40.0) & ((Data['Vpip%'] > 27.0) & (Data['Agg'] > 2.0)), 'Loose Aggresive', np.nan)
Data['Badge']=np.其中((数据['Hands']>30)和(数据['Vpip%']30)和(数据['Vpip%]>60.0),'Whale',np.nan)
数据['Badge']=np.其中((数据['Hands']>30)和(数据['Vpip%']40.0)),'Fish',np.nan)
数据['Badge']=np.其中((数据['Hands']>30)和(数据['Vpip%]]27.0)和(数据['Agg']<2.0)),“松散被动”,np.nan)
数据['Badge']=np.其中((数据['Hands']>30)和(数据['Vpip%]]27.0)和(数据['Agg']>2.0)),“松散攻击性”,np.nan)

有什么想法吗?

对于多种情况,请改用:


嗨@ciamciaramcia别忘了你可以投票并接受答案,看
c1 = (Data['Hands'] > 30) & (Data['Vpip%'] <= 18.0)
c2 = (Data['Hands'] > 30) & (Data['Vpip%'] > 60.0)
c3 = (Data['Hands'] > 30) & (Data['Vpip%'] <= 60.0)
c4 = ((Data['Hands'] > 30) & (Data['Vpip%'] <= 40.0) 
      & ((Data['Vpip%'] > 27.0) & (Data['Agg'] < 2.0)))
c5 = ((Data['Hands'] > 30) & (Data['Vpip%'] <= 40.0) 
      & ((Data['Vpip%'] > 27.0) & (Data['Agg'] > 2.0)))

Data['Badge'] = (np.select(condlist = [c1,c2,c3,c4,c5], 
                           choicelist = ['Rock', 'Whale', 'Fish', 'Loose Passive', 
                                         'Loose Aggresive'], 
                           default = np.nan))
print(Data)

Nickname      Vpip%       Pfr%       Agg  Hands  Badge
0       -2dV2dA-  25.675676  16.666667  1.187500    222   Fish
1        06Hookd  26.470588  16.176471  1.000000     68   Fish
2     0spiel2632  23.794212  17.363344  0.750000    311   Fish
3        10Pet10  23.214286   7.142857  1.000000     56   Fish
4      12022015a  75.000000        NaN       NaN      4    nan
5      17bastian  31.034483   6.896552  1.000000     29    nan
6      1990shawn  26.666667   6.666667  0.500000     15    nan
7      199376966  66.666667  25.000000  1.000000     12    nan
8     1MILKSHAKE  75.000000  50.000000       NaN      4    nan
9    1nheritance  30.136986  20.547945  1.000000     73   Fish
10      2016deal  63.076923  12.307692  1.142857     65  Whale
11        26tj26  43.589744  30.769231  1.333333     39   Fish
12     2SMUG4YOU  70.000000  20.000000  1.000000     10    nan
13          320t  71.074380  38.842975  1.410256    121  Whale
14    4cheeze126  52.205882  34.926471  0.900000    272   Fish
15      67bishop  19.148936   2.127660  1.000000     47   Fish
16    777aprilia  23.076923  15.384615       NaN     13    nan
17   77gost77129  17.241379  14.942529       NaN     87   Rock
18         7r3m5  19.942197  16.473988  1.111111    346   Fish
19  888sharkbait  50.000000  30.769231  0.750000     26    nan