我必须一口气在python中进行以下更改。我们可以使用replace / map在一个语句中做到吗?
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == 'Helipad')] = "Transport Services" <br>
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == 'Restaurant')] = "Fooding & Lodging Services" <br>
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == 'Pharmacy')] = "Emergency Services" <br>
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == 'Blood Bank')] = "Emergency Services" <br>
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == 'Godown')] = "Commercial Services" <br>
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == 'Factory')] = "Industries" <br>
答案 0 :(得分:0)
类似的事情可能会帮助您:
l = [('Helipad', "Transport Services"), ...]
for item in l:
data['CATEGORY'][(data.CATEGORY == 'Miscellaneous') & (data.SUB_CAT == item[0])] = item[1]
答案 1 :(得分:0)
如果您只想用“其他”更新行:
d = {'Helipad': 'Transport Services',
'Restaurant': 'Fooding & Lodging Services'}
mask = data['CATEGORY'] == 'Miscellaneous'
df.loc[mask, 'CATEGORY'] = df.loc[mask, 'SUB_CAT'].map(d)
使用结构将条件映射到值的字典来构建:
d = {('Miscellaneous', 'Helipad'): 'Transport Services',
('Miscellaneous', 'Restaurant'): 'Fooding & Lodging Services'}
然后使用pd.Series.map
:
# extract series of tuples
tups = data.set_index(['CATEGORY', 'SUB_CAT']).index.to_series()
# alternatively:
# tups = pd.Series(list(zip(data['CATEGORY'], data['SUB_CAT'])))
# map series to values
data['CATEGORY'] = tups.map(d).fillna(data['CATEGORY'])