替换看起来像是用一组新值替换列中的元素范围&将其余值设置为0

2024-05-01 21:49:51 发布

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

对于数据帧,我用一系列值替换了一列中的一组项,如下所示:

df['borough_num'] = df['Borough'].replace(regex=['MANHATTAN', 'BROOKLYN', 'QUEENS', 'STATEN ISLAND','BRONX'], value=[1, 2, 3, 4,5])

我想用0替换“Borough”中之前没有提到的所有其他元素的问题,我也需要使用regex,因为有类似于07 BRONX的数据,我也需要用5而不是0替换它


Tags: 数据元素dfvaluenumreplaceregexqueens
2条回答

从前面的问题,使用replace,关于它为什么工作,您可以检查link

s=df.Borough.replace(dict(zip(l,[1,2,3,4,5])),regex=True)
pd.to_numeric(s,errors = 'coerce').fillna(0).astype(int)
Out[44]: 
0    3
1    5 # notice here still change to 5 
2    1
3    2
4    0
Name: Borough, dtype: int32

数据输入

df = pd.DataFrame({
    'Borough': ['QUEENS', 'BRONX 777', 'MANHATTAN', 'BROOKLYN', 'INVALID']})
l = ['MANHATTAN', 'BROOKLYN', 'QUEENS', 'STATEN ISLAND','BRONX']

或者更短,使用map

df['borough_num']=df['Borough'].map(dict(zip(['MANHATTAN', 'BROOKLYN', 'QUEENS', 'STATEN ISLAND','BRONX'],[1, 2, 3, 4,5])))

现在:

print(df)

和预期的一样。你知道吗

更新:

df['borough_num']=df['Borough'].str.replace('\d+','').map(dict(zip(['MANHATTAN', 'BROOKLYN', 'QUEENS', 'STATEN ISLAND','BRONX'],[1, 2, 3, 4,5])))

相关问题 更多 >