【问题标题】:How to replace a value in column A where column B is equal to value?如何替换 A 列中 B 列等于值的值?
【发布时间】:2020-02-12 07:15:04
【问题描述】:

如果 B 列中的值等于 VendorA,我想用 A 列中的任何内容替换字符串的开头(前 5 个字符)。在没有上述条件的情况下,我没有进一步替换值。

我已经尝试了以下代码:

    ColumnA    Vendor
1    A          ABBC/1234
2    B          BCCD/1234           
3    B          1234
4    C          1234ABBC/

Dataset.ColumnA= Dataset.ColumnA.replace(regex=['ABBC/'], value='')
#This should be the output

    ColumnA    Vendor
1    A          1234
2    B          BCCD/1234           
3    B          1234
4    C          1234ABBC/

【问题讨论】:

  • Dataset['ColumnA'] = Dataset.ColumnA.str.replace('^ABBC/', '')?
  • @DanielMesejo 最好写成Dataset['ColumnA'] = Dataset['ColumnA'].str.replace('^ABBC/', '')

标签: python pandas numpy replace conditional-statements


【解决方案1】:
>>> df = pd.DataFrame({'ColumnA':['A','B', 'B', 'C'], 'Vendor':['ABBC/1234','BCCD/1234','1234','1234ABBC/']})
>>> cola = ''.join(df['ColumnA'].values.tolist())
>>> df['Vendor'] = df.apply(lambda row: row['Vendor'].split('/')[1] if row['Vendor'].startswith(cola) else row['Vendor'], axis=1)
>>> df
  ColumnA     Vendor
0       A       1234
1       B  BCCD/1234
2       B       1234
3       C  1234ABBC/

【讨论】:

    【解决方案2】:

    您可以在“/”上拆分并使用np.where 仅在“A”上指定。

    df['Vendor'] = np.where(df['ColumnA'].eq('A'), df['Vendor'].str.split('/').str[1], df['Vendor'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2023-01-19
      • 2022-07-01
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多