python - 连接和重命名 pandas 中的列

标签 python pandas dataframe

以下是我的数据框:

df1:

pri  sec0  sec1  sec2
ACL  EMR   DFG   XHD
ABC  MKB   JKL   KLF
XYZ  LMN   SDF   GHY

df2:

name loc
ACL 12
EMR 23
DFG 431
XHD 48
ABC 55
MKB 699
JKL 70
KLF 82
XYZ 93
LMN 10
SDF 235
GHY 53

我正在尝试将 df1 的每个 pri,sec0,sec1... 列与 df2 的 name 列连接,并希望将 loc 列附加到 pri,sec0,sec1...(分别为 pri_loc,sec0_loc...)

以下是所需的输出:

pri  pri_loc  sec0  sec0_loc  sec1  sec1_loc  sec2  sec2_loc
ACL  12       EMR   23        DFG   431       XHD   48
ABC  55       MKB   699       JKL   70        KLF   82
XYZ  93       LMN   10        SDF   235       GHY   53

我可以获得有关如何实现这一目标的建议吗?

最佳答案

您可以joinreplace 创建的新 DataFrame set_index 创建的 Series 的所有值,然后添加 add_suffix用于更改列名称和最后一个 sort_index用于对列进行排序:

df=df1.join(df1.replace(df2.set_index('name')['loc']).add_suffix('_loc')).sort_index(axis=1)
print (df)
   pri  pri_loc sec0  sec0_loc sec1  sec1_loc sec2  sec2_loc
0  ACL       12  EMR        23  DFG       431  XHD        48
1  ABC       55  MKB       699  JKL        70  KLF        82
2  XYZ       93  LMN        10  SDF       235  GHY        53

详细信息:

print (df1.replace(df2.set_index('name')['loc']).add_suffix('_loc'))
   pri_loc  sec0_loc  sec1_loc  sec2_loc
0       12        23       431        48
1       55       699        70        82
2       93        10       235        53

编辑:

if I have one more column say ternary in df1 and I do not want to join it with name of df2 but I want to reatin as it is in output

然后使用 set_index第一个和最后一个reset_index :

df1 = df1.set_index('ternary')
df = (df1.join(df1.replace(df2.set_index('name')['loc']).add_suffix('_loc'))
         .sort_index(axis=1)
         .reset_index())
print (df)

关于python - 连接和重命名 pandas 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48224839/

相关文章:

python - Groupby - 如何将逻辑检查结果应用于所有行

python - Pandas DataFrame - 将系列字符串拆分为多列

python - pandas 按 Q1 和 Q3 聚合进行分组

python - SQLAlchemy 中的连接池回收不会从 pg_stat_activity 回收空闲状态连接

python - Bucket.blob.upload_from_string 返回 "ValueError: None could not be converted to unicode"

python - Django - 如何批量删除

python - 切片 Pandas Dataframe 时如何返回索引

python - 将多行转换为列表

python - 如何将 Pandas 数据框显示为数据表?

python - 在Python3中为DataFrame创建列名的问题