Python 基于其他列值重命名列
我有一个包含以下列的数据框:Python 基于其他列值重命名列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含以下列的数据框: Region | LA code | LA Name ----------------------------------------- London | 201 | City of London London | 202 | Camden London | 203 | Greenwich London | 204 | Hackney London | 205 | Hammersmith and Fulham London |
Region | LA code | LA Name
-----------------------------------------
London | 201 | City of London
London | 202 | Camden
London | 203 | Greenwich
London | 204 | Hackney
London | 205 | Hammersmith and Fulham
London | 206 | Islington
London | 207 | Kensington and Chelsea
London | 208 | Lambeth
London | 209 | Lewisham
London | 210 | Southwark
London | 211 | Tower Hamlets
London | 212 | Wandsworth
London | 213 | Westminster
London | 301 | Barking and Dagenham
London | 302 | Barnet
London | 303 | Bexley
London | 304 | Brent
London | 305 | Bromley
London | 306 | Croydon
London | 307 | Ealing
London | 308 | Enfield
London | 309 | Haringey
London | 310 | Harrow
London | 311 | Havering
London | 312 | Hillingdon
London | 313 | Hounslow
London | 314 | Kingston upon Thames
London | 315 | Merton
London | 316 | Newham
London | 317 | Redbridge
London | 318 | Richmond upon Thames
London | 319 | Sutton
London | 320 | Waltham Forest
我的问题是,如果洛杉矶代码在201-213范围内,那么将伦敦重新命名为伦敦市中心,如果洛杉矶代码在301-320范围内,那么将伦敦重新命名为外伦敦,有什么简单快捷的方法
谢谢。这两个问题都由
pd.Series.between
回答
m = df['LA Code'].between(201, 213)
df.loc[m, 'Region'] = 'Inner ' + df.loc[m, 'Region']
# df.loc[m, 'Region'] = df.loc[m, 'Region'].radd('Inner ')
以及
使用
np.选择,可以指定条件和值的列表:
df = pd.DataFrame([['London', 201, 'City of London'],
['London', 302, 'Barnet']],
columns=['Region', 'LA Code', 'LA Name'])
conditions = [df['LA Code'].between(201, 213), df['LA Code'].between(301, 320)]
values = ['Inner ' + df['Region'], 'Outer ' + df['Region']]
df['Region'] = np.select(conditions, values, df['Region'])
print(df)
Region LA Code LA Name
0 Inner London 201 City of London
1 Outer London 302 Barnet
请注意,np.select的最后一个参数是默认参数,当提供的任何条件都不适用时使用。谢谢!如果您觉得答案有帮助,也可以对其进行投票;-)
df = pd.DataFrame([['London', 201, 'City of London'],
['London', 302, 'Barnet']],
columns=['Region', 'LA Code', 'LA Name'])
conditions = [df['LA Code'].between(201, 213), df['LA Code'].between(301, 320)]
values = ['Inner ' + df['Region'], 'Outer ' + df['Region']]
df['Region'] = np.select(conditions, values, df['Region'])
print(df)
Region LA Code LA Name
0 Inner London 201 City of London
1 Outer London 302 Barnet