【发布时间】:2020-05-26 10:48:54
【问题描述】:
我曾经在向数据框应用多个条件时使用 np.where 函数,并且感觉很好。 我想改进我的代码,其中在 np.where 中的每组条件中重复相同的条件,我不知道如何以最简单的方式(清晰简洁的方式)做到这一点,或者使用 (1) 。 loc 或 (2) IF "条件" DO "应用其他条件"
例子:
我只需要选择“日期”处于条件下的行(例如 >20200201),并且仅针对这些行,计算新列,应用另一组不同的条件(例如条件 1:A >20 和 B > 20;条件 2:A==30 和 B==10,条件 3:A==20 和 B>=10 等)
我的问题是最好的方法来做出第一个选择(数据 >20200202)而不是在每一行中重复 Date>2020201 并避免这种情况:
import pandas as pd
import numpy as np
df = pd.DataFrame({"ID": [1,3,2,2,3,1,3,2],
"Date": [20200109, 20200204, 20200307, 20200216, 20200107, 20200108, 20200214, 20200314],
"A": [20,10,40,40,10,20, 40,30],
"B": [20,30,40,50,20, 30, 20, 10]})
df['new']=np.nan
df['new']=np.where((df['Date']>20200201) & (df['A']>20) & (df['B']>20), 'value', df['new'])
df['new']=np.where((df['Date']>20200201) & (df['A']==30) & (df['B']==10), 'value', df['new'])
df['new']=np.where((df['Date']>20200201) & (df['A']==20) & (df['B']>=10), 'value', df['new'])
【问题讨论】:
-
请添加预期输出...您的条件的具体值