熊猫合并数据框:当其中一列与另一个数据框匹配时保留所有行

赛拉维

我想在python中找到一种方法来合并'seq'上的文件,但返回所有具有相同id的文件,在这个例子中,只有id为2的行会被删除。

档案一:

seq,id
CSVGPPNNEQFF,0
CTVGPPNNEQFF,0
CTVGPPNNERFF,0
CASRGEAAGFYEQYF,1
RASRGEAAGFYEQYF,1
CASRGGAAGFYEQYF,1
CASSDLILYYEQYF,2
CASSDLILYYTQYF,2
CASSGSYEQYF,3
CASSGSYEQYY,3

文件二:

seq
CSVGPPNNEQFF
CASRGEAAGFYEQYF
CASSGSYEQYY

输出:

seq,id
CSVGPPNNEQFF,0
CTVGPPNNEQFF,0
CTVGPPNNERFF,0
CASRGEAAGFYEQYF,1
RASRGEAAGFYEQYF,1
CASRGGAAGFYEQYF,1
CASSGSYEQYF,3
CASSGSYEQYY,3

我试过了:

df3 = df1.merge(df2.groupby('seq',as_index=False)[['seq']].agg(','.join),how='right')

输出:

seq,id
CASRGEAAGFYEQYF,1
CASSGSYEQYY,3
CSVGPPNNEQFF,0

有没有人有任何建议如何解决这个问题?

德鲁斯卡奇克

你想合并两个数据帧,还是只取第一个数据帧的子集,根据它id包含在第二个数据帧中(按seq)?无论如何,这给出了所需的结果。

df1 = pd.DataFrame({
    'seq': [
        'CSVGPPNNEQFF',
        'CTVGPPNNEQFF',
        'CTVGPPNNERFF',
        'CASRGEAAGFYEQYF',
        'RASRGEAAGFYEQYF',
        'CASRGGAAGFYEQYF',
        'CASSDLILYYEQYF',
        'CASSDLILYYTQYF',
        'CASSGSYEQYF',
        'CASSGSYEQYY'
    ],
    'id': [0, 0, 0, 1, 1, 1, 2, 2, 3, 3]
})

df2 = pd.DataFrame({
    'seq': [
        'CSVGPPNNEQFF',
        'CASRGEAAGFYEQYF',
        'CASSGSYEQYY'
    ]
})

df3 = df1.loc[df1['id'].isin(df1['id'][df1['seq'].isin(df2['seq'])])]

说明:df1['id'][df1['seq'].isin(df2['seq'])]idfrom的值,这些值df1至少seq包含df2. 然后所有具有这些值的行都id取自df1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

大熊猫合并两个数据框,其中一个包含另一列的值

熊猫会在一个数据框中删除与另一个数据框的一列中的行具有共同值的行

熊猫:合并(或内部联接)两个数据框,但仅保留其中一个列

将数据框的每一列除以另一个数据框的所有列

如何用所有列的另一个数据框中的匹配行替换一个数据框中的行

比较两个数据框,然后根据另一个数据框向其中一个数据框添加新列

根据关键列值熊猫将一个数据框中的行与另一个数据框中的行匹配

从另一个数据框的行合并一个数据框的列

合并两个熊猫数据框,其中一个是另一个的子集(或仅填充列的子集)

如何使用两个熊猫数据框创建一个新数据框,其中一个数据框具有特定的行?

将一个数据框的一列的每个值与另一个数据框的一列的值匹配(如果后者存在)

根据 R 中一列的值将一个数据框中的值插入到另一个数据框中

在数据框中查找包含另一个数据框中一行的所有元素的行

熊猫数据框之间的点分隔,忽略其中一个的第一列

基于来自另一个数据框熊猫的匹配值的新列

熊猫将1列的值与另一个数据框的列进行比较,找到匹配的行

熊猫根据另一个数据框中的匹配列填充新的数据框列

如果基于公共列的另一个数据框中没有匹配项,如何从一个数据框中删除行?

如何使用非唯一列将具有求和值的熊猫Groupby数据框映射到另一个数据框

根据另一个数据框的列填充熊猫数据框列

合并数据集,其中键位于R中一个数据集的列和另一个数据集的行上

基于另一个数据框合并和填充另一列的NA值

是否有一个 R 函数来过滤一个数据框,其中保留了所有匹配值的列?

如何使用数据框中的列值作为键来保留熊猫中另一个数据框中的行

熊猫:删除列与另一个数据框中显示的行

根据来自另一个数据框的行范围添加/填充熊猫列

熊猫数据框-通过另一个数据框的值过滤行

合并数据框列和基于另一个数据框列值的行到特定索引

创建一个数据框列,其中包含来自另一个数据框的匹配值列表