首页 > 解决方案 > 您可以根据特征值在另一个数据框中出现的次数来复制 pandas 数据框中的行吗?

问题描述

所以我有两个熊猫数据框。一个是名称和值的列表(每个名称出现一次):

名称 价值观
一个 0
b 10
C 0
d 10
e 0
F 10

第二个与第一个数据帧具有相同的名称值,但每个名称可以以随机顺序出现多次或 0 次。

名称
一个
b
C
C
F

有没有一种方法可以从第一个数据集中复制和删除行,因此每个名称在第一个数据集中出现的次数与该名称在第二个数据集中出现的次数相同。例如:

名称 价值观
一个 0
b 10
C 0
C 0
F 10

顺便说一句,所有名称均按字母顺序排列。

我能想到的唯一方法是从第二个数据帧的名称列中创建一个 numpy 数组,然后遍历该数组,获取第一个数据帧的行,其中名称列等于每个索引处的数组值,并将该行添加到新的数据框中。

但这似乎需要很长时间,而且我有相当大的数据集(50k 行),所以如果有人有更快的建议,将不胜感激。

标签: pythonpandasdataframeperformance

解决方案


df2.merge(df1, on="Names")

输出

    Names   Values
0   a       0
1   b       10
2   c       0
3   c       0
4   f       10

说明 我们可以将 df2 和 df1 合并为left or inner连接。我们inner join在上述解决方案中使用了默认值。


推荐阅读