我有一个庞大的Pandas数据框架,它的结构是这样的:
df1:
A B
0 0 12
1 0 15
2 0 17
3 0 18
4 1 45
5 1 78
6 1 96
7 1 32
8 2 45
9 2 78
10 2 44
11 2 10
第二个,像这样小一点:
df2
G H
0 0 15
1 1 45
2 2 31
我想按照以下规则向我的第一个 Dataframe 添加一列:column df1.C = df2.H when df1.A == df2.G
我设法做到这一点与循环,但数据库是巨大的,代码运行真的很慢,所以我正在寻找一个Pandas的方式或麻木做它。
非常感谢,
鲍里斯
4条答案
按热度按时间ovfsdjhp1#
如果只想匹配两个 Dataframe 中的共有行:
这也可以通过多个匹配参数来完成:(在本例中,df1中的Patrik不存在于df2中,因为它们具有不同的年龄,因此不会合并)
mwg9r5ms2#
您可能需要使用合并:
我会给予你一个有3列的 Dataframe ,但是第三列的名字是H
然后,我将为您提供所需的列名
dpiehjr43#
您可以通过
set_index
创建的Series
使用map
:或者将
merge
与drop
和rename
组合使用:ldioqlga4#
这是一个向量化的NumPy方法
idx
可以以更简单的方式计算为:df2.G.searchsorted(df1.A)
,但不要认为这会更有效,因为我们希望使用.values
的底层数组来提高性能,如前所述。