Python 3.x 基于多列的数据帧的条件映射
我有一个数据框架,需要根据基于值的条件将类别映射到两个单独的列上。要执行此操作的行总数约为一百万 示例数据帧是:Python 3.x 基于多列的数据帧的条件映射,python-3.x,pandas,dataframe,numpy,mapping,Python 3.x,Pandas,Dataframe,Numpy,Mapping,我有一个数据框架,需要根据基于值的条件将类别映射到两个单独的列上。要执行此操作的行总数约为一百万 示例数据帧是: df = pd.DataFrame({'col1':['B','A','A','B','C','B','C','C','A'], 'col2':[10,30,40,20,60,30,70,80,50]}) 现在,True的条件是: A:>30 B:>20 C:>60 如果col2中的值符合上述条件,则结果为真(1),否则为假(0) 预期结果是:
df = pd.DataFrame({'col1':['B','A','A','B','C','B','C','C','A'],
'col2':[10,30,40,20,60,30,70,80,50]})
现在,True的条件是:
col1 col2 result
0 B 10 0
1 A 30 0
2 A 40 1
3 B 20 1
4 C 60 0
5 B 30 1
6 C 70 1
7 C 80 1
8 A 50 1
我试着这样做:
df['result'] = np.select([(df['col1']=='A') & (df['col2']>30),
(df['col1']=='A') & (df['col2']<=30),
(df['col1']=='B') & (df['col2']>10),
(df['col1']=='B') & (df['col2']<=10),
(df['col1']=='C') & (df['col2']>60),
(df['col1']=='C') & (df['col2']<=60),
],
[True,
False,
True,
False,
True,
False
]
)
df['result']=np.选择([(df['col1']='A')&(df['col2']>30),
(df['col1']='A')和(df['col2']10),
(df['col1']='B')和(df['col2']60),
(df['col1']='C')&(df['col2']您可以通过
为位或
链接掩码:
df['result'] = (df['col1']=='A') & (df['col2']>30) |
(df['col1']=='B') & (df['col2']>10) |
(df['col1']=='C') & (df['col2']>60)
或:
df['result'] = np.where((df['col1']=='A') & (df['col2']>30) |
(df['col1']=='B') & (df['col2']>10) |
(df['col1']=='C') & (df['col2']>60), 1, 0)