【问题标题】:Pandas loc alternatives with conditionsPandas loc 有条件的替代方案
【发布时间】:2017-04-03 23:44:52
【问题描述】:

我计划提高非 Pandas 开发人员的可读性; 我有以下使用.loc工作 Python 代码:

new_value = 'stackoverflow'
s_query = 'nbc'
SUGGESTED = 'suggested'
QUERY = 'query'
df.loc[(df[QUERY] == s_query), [SUGGESTED]] = new_value

还可以选择:

new_value = 'stackoverflow'
s_query = 'nbc'
SUGGESTED = 'suggested'
QUERY = 'query'
df[SUGGESTED] = df[SUGGESTED].mask(df[QUERY] == s_query, new_value)

在这种情况下,df[SUGGESTED] 列将更新为与 df[QUERY] == s_query 匹配的行的 'stackoverflow' 值。 想知道 Pandas 中是否还有其他选项可以达到相同的结果。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用pd.DataFrame.masks 姊妹方法pd.DataFrame.where,它使Falses nan 并填写第二个参数

    df[SUGGESTED] = df[SUGGESTED].where(df[QUERY] != s_query, new_value)
    

    或者

    df.update(df[QUERY].eq(s_query).map({True: new_value}))
    

    【讨论】:

    • 有没有办法不修改 False 值而只用 new_value 更改与条件匹配的行?
    • 我的意思是 df[SUGGESTED] = np.where(df[QUERY] == s_query, new_value, np.nan) 将使用 NaN 更新其他行,但我只是对更新一个感兴趣行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2022-12-22
    • 2020-08-29
    • 2018-06-06
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多