在python中,如何从多个条件中筛选数据帧并替换数据帧列中的不同值?

2024-06-16 12:12:02 发布

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

我有一个数据帧

PROD   TYPE  QUANTI CONFI avail  req
 wood   i     20     100   1000  800
 tv     u     30     100   500   600
 tabl   i     50     100   300   200
 rmt    z     40     100   50    100
 zet    y     60     100   200   400
 rm     t     60     100   300   500
 rt     f     80     100   500   200
 dud    i     40     100   900   800

如果avail-req>;80
如果列“TYPE”为“i”(如果它满足条件),则将“CONFI”设置为10;如果它不满足条件,则将“CONFI”设置为0。
(表示“类型”=“i”可以是10或0)
如果不满足任何条件,则将其重置为零

PROD   TYPE  QUANTI CONFI avail  req
 wood   i     20     10   1000   800
 tv     u     30     100   700   600
 tabl   i     50     0     300   250
 rmt    z     40     0     50    100
 zet    y     60     100   200   400
 rm     t     60     0     300   500
 rt     f     80     100   500   200
 dud    i     40     10    900   800

Tags: 数据rmtypeprodtvreqrtwood
1条回答
网友
1楼 · 发布于 2024-06-16 12:12:02

IIUC用途:

m1 = (df.avail - df.req) > 80
m2 = df.TYPE == 'i'

df['CONFI'] = np.where(m2, 10, np.where(m1, 100, 0))
print (df)
   PROD TYPE  QUANTI  CONFI  avail  req
0  wood    i      20     10   1000  800
1    tv    u      30    100    700  600
2  tabl    i      50     10    300  200
3   rmt    z      40      0     50  100
4   zet    y      60      0    200  400
5    rm    t      60      0    300  500
6    rt    f      80    100    500  200
7   dud    i      40     10    900  800

使用^{}的解决方案:

df['CONFI1'] = np.select([m2,m1], [10,100], 0)

相关问题 更多 >