【问题标题】:Pandas Dataframe : Why is there a difference between df.loc[df['height']>3,'height'] = 2 and df.loc[df['height']>3,['height']] = 2Pandas Dataframe:为什么 df.loc[df['height']>3,'height'] = 2 和 df.loc[df['height']>3,['height']] = 2 有区别
【发布时间】:2020-04-11 11:08:20
【问题描述】:

我有一个名为 df 的 pandas 数据框,它有几列,其中之一称为“高度”。我想修改高于 3 的高度并将其替换为 2。我使用了以下代码:

df.loc[df['height']>3,'height'] = 2

这不会做任何修改。

我使用这个代码:

df.loc[df['height']>3,['height']] = 2

这工作得很好。我有点理解,在第一个版本中,创建了 df 的副本版本,但不清楚为什么,让 [] 做出这样的改变我很奇怪。

有人可以解释发生了什么吗?

【问题讨论】:

    标签: python pandas dataframe set variable-assignment


    【解决方案1】:

    问题是你没有提供minimal, reproducible example,所以试图帮助你变成了猜谜游戏:

    假设您有一个简单的数据框,例如

    import pandas as pd
    df = pd.DataFrame({'height':range(6)})
    

    那么您的两个代码行都可以正常工作,除了第二个版本中的附加索引运算符 [ ] 完全没有必要并且在这两种情况下都没有涉及 copy version of df

    【讨论】:

    • 您好,感谢您的回答和建议。嗯,我好像在看未更新的 df 版本。看起来 Spyder 没有更新变量资源管理器中的变量。很抱歉这个问题。我想我应该删除它。
    猜你喜欢
    • 2013-01-08
    • 2012-01-29
    • 2012-10-08
    • 2018-12-10
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2012-10-28
    • 2011-04-03
    相关资源
    最近更新 更多