python - 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)
解决方案
您可以将 的索引增加df
1 以匹配libcs
and的值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
推荐阅读
- c# - 如何从 MS Access 文件中读取数据并使用 T-SQL 或 SSIS 将该数据从每个工作表插入到相应的 SQL Server 数据库表中?
- apache-kafka - 状态存储可能已迁移到另一个实例
- reactjs - 如何将 HTML 输入值流与 UP 或 DOWN 键流以及输入类型流结合起来?
- typescript - “字符串”类型上不存在属性“matchAll”
- python - 在 Python 中将屏幕输出发送到 /dev/null
- java - 如何使用键值检索整个 JSON 对象?
- xml - How to grab specific files recursively and store their relative paths in a dictionary?
- javascript - JQuery DataTables Plugin not showing data ASP.Net
- r - Passing Variable as aes reference
- r - R中KableExtra中的列名格式