首页 > 解决方案 > Pandas:根据另一个数据框的长度添加列信息

问题描述

我有两个数据框。我想通过匹配数据框 1 中的列信息将第二个数据框的列添加到第一个数据框中。

第一个数据框:dd

         BCS        libcs
0        AAA-1        1
1        ABA-1        1
2        ACD-1        1
3        AAT-1        1
4        AAR-1        1
           ...      ...
188453  TCC-61       61
188454  TTG-61       61
188455  CTG-61       61
188456  ATG-61       61
188457  TTT-61       61

print(dd.shape)
(188458, 2)

第二个数据框:df

     sample_id       DState
0    H20_AGS          AG
1    H21_AGS          AG
2    H22_BGS          BG
3    H23_AGS          AG
4    H24_CGS          CG
..   ...     ...
56    H90_DGS          DG
57    H91_DGS          DG
58    H92_BGS          BG
59    H93_BGS          BG
60    H94_CGS          CG

print(df.shape)
(61, 2)

dataframe1中的列中有 61 个唯一项,libcs第二个数据框中有 61 行。我想根据匹配的列信息进行合并。

预期输出:

         BCS        libcs     sample_id       DState
0        AAA-1        1       H20_AGS          AG
1        ABA-1        1       H20_AGS          AG
2        ACD-1        1       H20_AGS          AG
3        AAT-1        1       H20_AGS          AG
4        AAR-1        1       H20_AGS          AG
           ...      ...
188453  TCC-61       61       H94_CGS          CG
188454  TTG-61       61       H94_CGS          CG
188455  CTG-61       61       H94_CGS          CG
188456  ATG-61       61       H94_CGS          CG
188457  TTT-61       61       H94_CGS          CG

我尝试了下面的代码,但似乎它不起作用

dd.libcs.value_counts()
dd.index = dd.groupby(level=0).cumcount()
C = dd.join(df).reset_index(drop=True)
print (C)

标签: pythonpandasdataframe

解决方案


您可以将 的索引增加df1 以匹配libcsand的值merge

df.index += 1
dd.merge(df, left_on='libcs', right_index=True)

输出:

           BCS  libcs sample_id DState
0        AAA-1      1   H20_AGS     AG
1        ABA-1      1   H20_AGS     AG
2        ACD-1      1   H20_AGS     AG
3        AAT-1      1   H20_AGS     AG
4        AAR-1      1   H20_AGS     AG
...
188453  TCC-61     61   H94_CGS     CG
188454  TTG-61     61   H94_CGS     CG
188455  CTG-61     61   H94_CGS     CG
188456  ATG-61     61   H94_CGS     CG
188457  TTT-61     61   H94_CGS     CG

推荐阅读