对于下面的DataFrame df
df = pd.DataFrame([('Tesla','Model3', '-', 'Motor'),
('Tesla', 'ModelS', '-', 'MotorMD3'),
('Tesla', 'ModelX', '-', 'MotorMD3'),
('Tesla', 'ModelY', '-', 'Motor'),
('Jeep', 'Wrangler','Grouped','Engine'),
('Jeep', 'Compass', 'Grouped','EngineMD3'),
('Jeep', 'Patriot', 'Grouped','Engine'),
('Jeep', 'Cherokee','Grouped','Engine'),
('Ford', 'Mustang', 'Grouped','Engine'),
('Ford', 'F150', 'Grouped','Engine') ],columns=['Make','Model','Status','Type'])
df
Make Model Status Type
0 Tesla Model3 - Motor
1 Tesla ModelS - MotorMD3
2 Tesla ModelX - MotorMD3
3 Tesla ModelY - Motor
4 Jeep Wrangler Grouped Engine
5 Jeep Compass Grouped EngineMD3
6 Jeep Patriot Grouped Engine
7 Jeep Cherokee Grouped Engine
8 Ford Mustang Grouped Engine
9 Ford F150 Grouped Engine我正在尝试用EngineMD3更新列EngineMD3,如果EngineMD3存在于该Make中的任何一个Models中,以及如果Status是该Make的Grouped,则为所有相同的Make。但是,如果Status不是Grouped,则应为每个Models保留Type。如果“EngineMD3”不存在,则Type应保持为Engine。
例如,Tesla不是Grouped,因此每个模型都保持它们的Type相同。但是Jeep是Grouped,Compass的Type是EngineMD3,所以EngineMD3被更新为Type for all Jeep Models。Ford是Grouped,但是没有一个Models具有EngineMD3类型,所以Type保持为Engine
预期产出
Make Model Status Type
0 Tesla Model3 - Motor #For Tesla Type is maintained for each model seperately since it is not grouped
1 Tesla ModelS - MotorMD3
2 Tesla ModelX - MotorMD3
3 Tesla ModelY - Motor
4 Jeep Wrangler Grouped EngineMD3 #Since Jeep is grouped, all its Type is changed to EngineMD3 since one of the model had EngineMD3
5 Jeep Compass Grouped EngineMD3
6 Jeep Patriot Grouped EngineMD3
7 Jeep Cherokee Grouped EngineMD3
8 Ford Mustang Grouped Engine #Even though Ford is grouped, since there is no EngineMD3 the Type is maintained as Engine.
9 Ford F150 Grouped Engine换句话说,条件适用于所有的makes(例如。)如果make被分组,如果FD3被附加到任何模型types中,那么在同一个make中的所有分组模型都会被附加到FD3中。
我尝试使用np.select更新具有多个条件的Type列,但是我不能给出一个条件来一次选择所有相同的Make并更新Type。请帮助我,我在这里没有选择了。
发布于 2022-11-03 04:05:00
df.loc[df.Status.eq('Grouped'), 'Type'] = df[df.Status.eq('Grouped')].groupby('Make').Type.transform(
lambda x: 'EngineMD3' if x.eq('EngineMD3').any() else x) Make Model Status Type
0 Tesla Model3 - Motor
1 Tesla ModelS - MotorMD3
2 Tesla ModelX - MotorMD3
3 Tesla ModelY - Motor
4 Jeep Wrangler Grouped EngineMD3
5 Jeep Compass Grouped EngineMD3
6 Jeep Patriot Grouped EngineMD3
7 Jeep Cherokee Grouped EngineMD3
8 Ford Mustang Grouped Engine
9 Ford F150 Grouped Enginehttps://stackoverflow.com/questions/74297709
复制相似问题