繁体   English   中英

python 用额外的列连接替换 dataframe 列值

[英]python replace dataframe column values with additional column concatenation

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

     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?

提前感谢您的想法!

尝试这个:

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

以下是使用来自Jamjitul的连接代码和np.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_b col_c 寒冷的
0 101 104 AAB 101-104-AAB
1 337 103 加元 337-103-加元
2 524 204 DER 524-204-DER
3 129 404 EEH 129
4 842 108 人力资源 842
5 337 108 HHE 337-108-HHE

此处总结了用于捕获 OR 条件的其他选项(当前由上面的|分隔)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM