python - 根据字符串值合并两个数据帧
问题描述
我在 DF1 中的 col1 中有复杂的文本作为值,我希望它与 DF2 中的 clo1 和 2 合并。我想知道是否有一种快速的方法可以将它与 python 合并
import pandas as pd
DF1 = pd.DataFrame({'Col1':['AB/B/C','DE/f','G/T/R']})
DF2 = pd.DataFrame({'Col1':['AB','B','C','D'],
'Test2':[1,2,3,4]})
print(DF1)
print(DF2)
先感谢您
解决方案
这应该让你接近你想要的。您可能需要清理一些行才能获得最终的数据框
dft = DF1.Col1.str.split('/').explode()
dft = DF1.merge(dft, left_index=True, right_index=True)
dft.merge(DF2, left_on='Col1_y', right_on='Col1', how='left')
Col1_x Col1_y Col1 Test2
0 AB/B/C AB AB 1.0
1 AB/B/C B B 2.0
2 AB/B/C C C 3.0
3 DE/f DE NaN NaN
4 DE/f f NaN NaN
5 G/T/R G NaN NaN
6 G/T/R T NaN NaN
7 G/T/R R NaN NaN
推荐阅读
- python - 删除特定值的重复项
- powershell - 将从图形调用获得的 DateTime 转换为运行脚本的 PC 上设置的时区
- vue.js - Vue - 正确的路线,正确的视图,但仍然 404(未找到)错误
- ios - 反应原生 IAP:订阅总是返回状态:21002 a
- oracle - 以 sys_refcursor 作为参数动态调用过程
- arrays - 准备 numpy 数组的视图(没有内存开销)
- python - 将多行合并为一列
- android - 如何在 JetpackCompose “行”或“列”中设置 ClipToBounds “false”
- database - 使用 mongoDB 的 AVG 函数
- javascript - 将数组的总和转换为变量