Python检查列中的字符串以执行公式
我有一个df,如下所示,我正试图根据Python检查列中的字符串以执行公式,python,pandas,numpy,Python,Pandas,Numpy,我有一个df,如下所示,我正试图根据计划列和成员计数列创建一个名为df['Seat\u AVAIL']的新列 基本上: 如果df['Plan']=('LUX'或'Premium'),则通过执行(10+(mem\u count val-1)*5)计算df['Seat\u AVAIL'] elifdf['Plan']='Limited'然后,计算df['Seat\u AVAIL'](5+(mem\u count val-1)*2)以计算mem\u count 否则,df['PLAN']='Free'
计划
列和成员计数
列创建一个名为df['Seat\u AVAIL']
的新列
基本上:
如果df['Plan']
=('LUX'
或'Premium'
),则通过执行(10+(mem\u count val-1)*5)计算df['Seat\u AVAIL']
elifdf['Plan']
='Limited'
然后,计算df['Seat\u AVAIL']
(5+(mem\u count val-1)*2)以计算mem\u count
否则,df['PLAN']
='Free'
则df['Seat\u AVAIL']
应为空
数据帧:
ID Guest_COUNT Mem_COUNT Plan
8472 82 20 Free
2426 67 10 Premium
2299 55 21 LUX
3787 48 52 LIMITED
2553 41 12 Free
8660 39 16 Premium
所需输出示例,带座椅可用性计算
ID Guest_COUNT Mem_COUNT Seat_AVAIL Plan
8472 82 20 NULL Free
2426 67 10 50 Premium
2299 55 21 110 LUX
3787 48 6 15 LIMITED
2553 41 12 NULL Free
8660 39 8 45 Premium
我尝试在google sheets中使用ifs语句直接执行类似操作,但出现了错误,我认为python可能有一个快速解决方案。使用指定的掩码和输出,如果不匹配,则任何掩码值都返回同一列:
m1 = df['Plan'].isin(['LUX', 'Premium'])
m2 = df['Plan'] == 'Limited'
m3 = df['Plan'] == 'Free'
s1 = 10+(df['Mem_COUNT']-1)*5
s2 = 5+(df['Mem_COUNT']-1)*2
df['Seat_AVAIL'] = np.select([m1, m2, m3], [s1, s2, np.nan], default=df['Mem_COUNT'])
print (df)
ID Guest_COUNT Mem_COUNT Plan Seat_AVAIL
0 8472 82 20 Free NaN
1 2426 67 10 Premium 55.0
2 2299 55 21 LUX 110.0
3 3787 48 52 LIMITED 52.0 <- no match
4 2553 41 12 Free NaN
5 8660 39 16 Premium 85.0
df['Seat_AVAIL'] = np.select([m1, m2], [s1, s2], default=np.nan)
print (df)
ID Guest_COUNT Mem_COUNT Plan Seat_AVAIL
0 8472 82 20 Free NaN
1 2426 67 10 Premium 55.0
2 2299 55 21 LUX 110.0
3 3787 48 52 LIMITED NaN <- no match
4 2553 41 12 Free NaN
5 8660 39 16 Premium 85.0