Pandas列中替换多个值而无需循环

2024-06-26 17:45:14 发布

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

我有Pandas dataframe,想在df的特定列上替换很多值。在

如何在没有循环的情况下实现下面的代码?在

for i in range(len(data.loc[:, 'CityID'])):
    if data.loc[:, 'CityID'][i] == 1:
        data.loc[:, 'CityID'][i] = 1
    elif data.loc[:, 'CityID'][i] in (2, 3, 4, 21):
        data.loc[:, 'CityID'][i] = 2
    elif data.loc[:, 'CityID'][i] in (33, 34):
        data.loc[:, 'CityID'][i] = 4
    else:
        data.loc[:, 'CityID'][i] = 3

Tags: 代码indataframepandasdffordatalen
2条回答

使用:

m1 = data['CityID'] == 1
m2 = data['CityID'].isin([2, 3, 4, 21])
m3 = data['CityID'].isin([33, 34])

data['CityID'] = np.select([m1, m2, m3], [1,2,4], default=3)

可以使用带^{}的词典:

d = {1: 1, 2: 2, 3: 2, 4: 2, 21: 2, 33: 4, 34: 4}

data['CityID'] = data['CityID'].map(d).fillna(3)

如果字典构造感觉很费劲,可以使用unpacking:

^{pr2}$

相关问题 更多 >