【问题标题】:python replace dataframe column values with additional column concatenationpython用额外的列连接替换数据框列值
【发布时间】:2022-01-12 23:40:41
【问题描述】:

我有一个从多列生成的 df 输出(下面的示例):

     col_a     col_b     col_c
0     101       104       AAB
1     337       103       CAD
2     524       204       DER
3     129       404       EEH
4     842       108       HHR
5     337       108       HHE

在 python 中我是否可以替换 col_a 值,这样如果任何值是 101 或 337 或 524,col_a 值将连接到其对应的 col_b 和 col_c 值?

所以:

101 将替换为 101-104-AAB,
337 将变为 337-103-CAD(第 1 行)和 337-108-HHE(第 5 行),并且
524 会变成 524-204-DER?

提前感谢您的想法!

【问题讨论】:

    标签: python indexing replace concatenation


    【解决方案1】:

    试试这个:

    df.loc[:, ['col_a','col_b']] = df.loc[:, ['col_a','col_b']].astype(str)
    df['col_a'] + '-' + df['col_b'] + '-' + df['col_c']
    

    【讨论】:

    • 感谢您的帖子。连接成功地生成了列表,即 0 101-104-AAB 1 337-103-CAD 等。但是我正在尝试将前 3 个字符与原始列表进行索引以进行替换,但无法...以任何方式在新的 dtype: 对象中维护原始的“col_a”?
    【解决方案2】:

    使用Jamjitulnp.where() 的串联代码成功完成以下操作

    import pandas as pd
    import numpy as np
    
    file='insert path'
    df = pd.read_csv(file)
    df.loc[:, ['col_a','col_b']] = df.loc[:, ['col_a','col_b']].astype(str)
    dfseg=df['col_a']+'-'+df['col_b']+'-'+df['col_c']
    
    df['col_d'] = np.where((df['col_a']=='101')|(df['col_a']=='337')|(df['col_a']=='524'),dfseg,df['col_a'])
    
    df
    

    生成此列表:

    col_a col_b col_c col_d
    0 101 104 AAB 101-104-AAB
    1 337 103 CAD 337-103-CAD
    2 524 204 DER 524-204-DER
    3 129 404 EEH 129
    4 842 108 HHR 842
    5 337 108 HHE 337-108-HHE

    其他用于捕获 OR 条件的选项(目前由上面的| 分隔)总结为here

    【讨论】:

      猜你喜欢
      • 2017-08-03
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2018-09-29
      • 2014-11-12
      相关资源
      最近更新 更多