【问题标题】:Pandas replace values熊猫替换值
【发布时间】:2023-03-06 09:17:01
【问题描述】:

我有以下数据框:

     col
0    pre
1    post
2    a
3    b
4    post
5    pre
6    pre

我想将数据框中所有不包含'pre'的行替换为'nonpre',所以数据框看起来像:

     col
0    pre
1    nonpre
2    nonpre
3    nonpre
4    nonpre
5    pre
6    pre

我可以使用字典和 pandas 替换来做到这一点,但是我只想选择不是“pre”的元素并将它们替换为“nonpre”。有没有更好的方法来做到这一点而不在字典中列出所有可能的 col 值?

【问题讨论】:

    标签: python replace pandas


    【解决方案1】:
    df[df['col'].apply(lambda x: 'pre' not in x)] = 'nonpre'
    

    【讨论】:

      【解决方案2】:

      只要您对 pandas 允许的 df.loc[condition, column] 语法感到满意,这很容易,只需执行 df['col'] != 'pre' 即可找到所有应更改的行:

      df['col2'] = df['col']
      df.loc[df['col'] != 'pre', 'col2'] = 'nonpre'
      
      df
      Out[7]: 
          col    col2
      0   pre     pre
      1  post  nonpre
      2     a  nonpre
      3     b  nonpre
      4  post  nonpre
      5   pre     pre
      6   pre     pre
      

      【讨论】:

      • 谢谢!使用 .loc 有什么问题我应该提防吗?
      • 不,.loc 基本上是当您想要获取数据框中的一组特定行和列时应该首先尝试的。不确定您是否有使用 R 的经验,但它的工作方式与 R 数据帧的子集语法非常相似。
      猜你喜欢
      • 1970-01-01
      • 2016-12-30
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 2023-02-25
      • 2016-07-06
      相关资源
      最近更新 更多