簡體   English   中英

如何根據條件替換 pandas DataFrame 中的值?

[英]How do I replace a value in pandas DataFrame based on a condition?

我有以下 DataFrame:

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

數據框

我想用 HONDA 替換RED BULL RACING HONDA HONDA 我相信當我使用以下任一方法時,我會得到正確的答案:

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

數據框2

但我收到以下警告:

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

當我使用以下內容時:

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

我沒有收到任何警告/錯誤。

我的問題是,以上哪種方法是根據 pandas 中的條件替換值的首選方法?

我認為這取決於數據,如果需要替換多個值,請使用字典,例如:

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

為避免您的錯誤,需要在car內指定DataFrame.loc ,但如果需要多個替換更好的是第一個解決方案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM