【问题标题】:joining and renaming columns in pandas加入和重命名熊猫中的列
【发布时间】:2018-01-12 19:46:45
【问题描述】:

以下是我的数据框:

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

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

【问题讨论】:

  • 我尝试使用名称连接各个列(例如:具有名称的主列以获取创建 pri_loc、sec0 和名称以获取 sec0_loc....)。但我正在尝试找到一种有效的方法,它可以在一两个步骤内给我想要的输出......

标签: python pandas dataframe


【解决方案1】:

您可以 joinDataFrame 创建 replace 所有值 Series 创建 set_index,然后添加 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

编辑:

如果我在df1 中还有一列说ternary,并且我不想以df2 的名称加入它,但我想在输出中保留它

然后使用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)

【讨论】:

  • 如果我在 df1 中还有一列说三进制,我不想用 df2 的名称加入它,但我想在输出中重新输入??
  • 解决方法一样,只是第一步是df1 = df1.set_index('ternary')最后加上.reset_index()
  • 能否请您在 cmets 中添加一个完整的解决方案??
  • 好的,请稍等。
猜你喜欢
  • 2021-08-15
  • 2019-05-25
  • 2020-07-04
  • 2020-09-23
  • 1970-01-01
  • 2021-12-07
  • 2014-11-23
  • 2022-11-21
相关资源
最近更新 更多