如何使用字典更改另一列

2024-09-30 06:26:31 发布

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

这里有df

df = pd.DataFrame({'Menu':['Salad', 'Buger', 'Buger', 'Buger'], 
                    'Combo':['Salad A', 'Buger A', 'Buger B', 'Buger C'], 
                    'Status':['Regular', 'Regular', 'Regular', 'Promotion']}) 

    Menu    Combo       Status
0   Salad   Salad A     Regular
1   Buger   Buger A     Regular
2   Buger   Buger B     Regular
3   Buger   Buger C     Promotion

我想使用dic来基于Combo值更改Status。为此:

dic = {'Buger B': 'Promotion', 'Buger C': 'Unavailable'}

    Menu    Combo       Status
0   Salad   Salad A     Regular
1   Buger   Buger A     Regular
2   Buger   Buger B     Promotion
3   Buger   Buger C     Unavailable

Tags: dataframedfstatusmenupdcombodicpromotion
3条回答
for key in dic.keys():
    df.loc[df['Combo'] == key, 'Status'] = dic[key]

输出:

    Menu    Combo       Status
0  Salad  Salad A      Regular
1  Buger  Buger A      Regular
2  Buger  Buger B    Promotion
3  Buger  Buger C  Unavailable

您可以使用^{}^{}

df["Status"] = df["Combo"].map(dic).fillna(df["Status"])

输出:

    Menu    Combo   Status
0   Salad   Salad A Regular
1   Buger   Buger A Regular
2   Buger   Buger B Promotion
3   Buger   Buger C Unavailable

我会这样做的。总是建议使用itertuples(),因为在pandas.DataFrame上迭代要快得多

for val in df.itertuples():
    combo_val = getattr(val, 'Combo')
    if combo_val in dic.keys():
        df.loc[val[0], 'Status'] = dic[combo_val]

print(df)

输出:

    Menu    Combo       Status
0  Salad  Salad A      Regular
1  Buger  Buger A      Regular
2  Buger  Buger B    Promotion
3  Buger  Buger C  Unavailable

相关问题 更多 >

    热门问题