Python 如何根据条件替换数据帧中的值?

Python 如何根据条件替换数据帧中的值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: races_dict = { "grand_prix": [ 'Australia', 'Bahrain', 'China', 'Azerbaijan', 'Spain', 'Monaco', 'Canada', 'France', 'Austria', 'Great Britain', 'Germany', 'Hungary', 'Belgium', 'Ita

我有以下数据帧:

races_dict = {
    "grand_prix": [ 
        'Australia', 'Bahrain', 'China', 
        'Azerbaijan', 'Spain', 'Monaco', 
        'Canada', 'France', 'Austria', 
        'Great Britain', 'Germany', 'Hungary', 
        'Belgium', 'Italy', 'Singapore', 
        'Russia', 'Japan', 'Mexico', 
        'United States', 'Brazil',
    ],
    "laps": [
        58, 57, 56,
        51, 66, 78,
        70, 53, 71, 
        52, 64, 70,
        44, 53, 61,
        53, 52, 71, 
        56, 71, 
    ],
    'winner': [
        'Valtteri Bottas', 'Lewis Hamilton', 'Lewis Hamilton',
        'Valtteri Bottas', 'Lewis Hamilton', 'Lewis Hamilton',
        'Lewis Hamilton', 'Lewis Hamilton', 'Max Verstappen',
        'Lewis Hamilton', 'Max Verstappen', 'Lewis Hamilton',
        'Charles Leclerc', 'Charles Leclerc', 'Sebastian Vettel',
        'Lewis Hamilton', 'Valtteri Bottas', 'Lewis Hamilton',
        'Valtteri Bottas', 'Max Verstappen'
    ],
    'car': [
        'MERCEDES', 'MERCEDES', 'MERCEDES', 
        'MERCEDES', 'MERCEDES', 'MERCEDES', 
        'MERCEDES', 'MERCEDES', 'RED BULL RACING HONDA',
        'MERCEDES', 'RED BULL RACING HONDA', 'MERCEDES',
        'FERRARI', 'FERRARI', 'FERRARI', 
        'MERCEDES', 'MERCEDES', 'MERCEDES', 
        'MERCEDES', 'RED BULL RACING HONDA'
        ]
}

df = pd.DataFrame(races_dict)
df

我想用
本田
取代
红牛赛车本田
。我相信当我使用以下任一项时,我会得到正确的答案:

df.car[df.car=='RED BULL RACING HONDA'] = 'HONDA'
df.car.loc[df.car=='RED BULL RACING HONDA'] = 'HONDA'
df.car = df.car.replace('RED BULL RACING HONDA', 'HONDA')

但我收到以下警告:

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame
当我使用以下命令时:

df.car[df.car=='RED BULL RACING HONDA'] = 'HONDA'
df.car.loc[df.car=='RED BULL RACING HONDA'] = 'HONDA'
df.car = df.car.replace('RED BULL RACING HONDA', 'HONDA')
我没有收到任何警告/错误


我的问题是,根据pandas中的条件,上面哪种方法是替换值的首选方法?

我认为这取决于数据,如果需要重新设置多个值,请使用字典,如:

df.car = df.car.replace({'RED BULL RACING HONDA': 'HONDA', 'aa':'bb'})

为了避免您的错误,需要在车内指定列
car
,但如果需要多次更换,最好的解决方案是:

df.loc[df.car=='RED BULL RACING HONDA', 'car'] = 'HONDA'

我遇到了这个问题,但是我不是使用了正确的技术来使用loc吗?