以下是我的数据框:
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
我可以获得有关如何实现这一目标的建议吗?
最佳答案
您可以join
由 replace
创建的新 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
indf1
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/