基于lis填充数据帧列

2024-06-28 14:58:07 发布

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

我有一个数据帧

vehicle_make    vehicle_model   vehicle_year
Toyota  Corolla 2016
Hyundai Sonata  2016
Cadillac    DTS 2006
Toyota  Prius   2014
Kia Optima  2015

我想添加一个新的列“车辆制造类别”,它根据我的列表填充

^{pr2}$

如何才能做到这一点?我试过用

df['vehicle_make_category']=np.where(df['vehicle_make']=i for i in luxury, 'luxury')

但它不起作用。。。在


Tags: 数据dfmakemodelyearvehicledtssonata
3条回答

使用isin并向np.where添加一个条件,该条件将填补未计算为true的条件的空白

df['vehicle_make_category'] = np.where(df.vehicle_make.isin(luxury),'luxury','non-luxury')

  vehicle_make vehicle_model  vehicle_year vehicle_make_category
0       Toyota       Corolla          2016            non-luxury
1      Hyundai        Sonata          2016            non-luxury
2     Cadillac           DTS          2006            non-luxury
3       Toyota         Prius          2014            non-luxury
4          Kia        Optima          2015            non-luxury

使用^{}我们可以创建一个条件列表,并根据条件为true分配值

^{pr2}$

你能帮我们吗数据框连接在

你必须创建一个新的数据帧来标识奢侈品/非奢侈品。在

veh = ['toyota','hyundai','cadillac']
yr = [2016,2016,2016]
lux = ['non','non','lux']

#recreating your lux/non layout
n_lux = [veh[0],veh[1]]
lux = [veh[2]]

#then making a new column
b = ['non' if v in n_lux else 'lux' for v in veh]


A = pd.DataFrame(np.array([veh,yr]).T)
B =pd.DataFrame(np.array([veh,b]).T)
pd.concat([A,B],axis = 1, keys = [0])

简单地说

df["vehicle_make_category"] = None
df.loc[df["vehicle_make"].isin(luxury), "vehicle_make_category"] = "luxury"
df.loc[df["vehicle_make"].isin(non_luxury), "vehicle_make_category"] = "non_luxury"

相关问题 更多 >