Python 根据另一个数据帧的值从一个数据帧中选择行
取两个数据帧Python 根据另一个数据帧的值从一个数据帧中选择行,python,pandas,dataframe,Python,Pandas,Dataframe,取两个数据帧 print(df1) A B 0 a 1 1 a 3 2 a 5 3 b 7 4 b 9 5 c 11 6 c 13 7 c 15 print(df2) C D a apple 1 b pear 1 c apple 1 因此,df1['A']列中的值是df2的索引 我想选择df1中的行,其中A列中的值是df2['C']中的'apple'。导致: A B 0 a 1 1 a 3 2 a 5 5
print(df1)
A B
0 a 1
1 a 3
2 a 5
3 b 7
4 b 9
5 c 11
6 c 13
7 c 15
print(df2)
C D
a apple 1
b pear 1
c apple 1
因此,df1['A']
列中的值是df2
的索引
我想选择df1
中的行,其中A列中的值是df2['C']
中的'apple'
。导致:
A B
0 a 1
1 a 3
2 a 5
5 c 11
6 c 13
7 c 15
由于评论和问题编辑,进行了多次编辑,
基本上,首先通过C中的值过滤数据帧来提取df2的索引,然后使用isin
indexes = df2[df2['C']=='apple'].index
df1[df1['A'].isin(indexes)]
>>>
A B
0 a 1
1 a 3
2 a 5
5 c 11
6 c 13
7 c 15
更新
如果您希望最小化内存分配,请尝试阻止保存信息,(注意,我不确定ot是否会解决您的内存分配问题,因为我没有关于该情况的全部详细信息,甚至可能不适合提供解决方案):
由于评论和问题编辑,进行了多次编辑,
基本上,首先通过C中的值过滤数据帧来提取df2的索引,然后使用isin
indexes = df2[df2['C']=='apple'].index
df1[df1['A'].isin(indexes)]
>>>
A B
0 a 1
1 a 3
2 a 5
5 c 11
6 c 13
7 c 15
更新
如果您希望最小化内存分配,请尝试阻止保存信息,(注意,我不确定ot是否会解决您的内存分配问题,因为我没有关于该情况的全部详细信息,甚至可能不适合提供解决方案):
谢谢这适用于较小的数据帧,但我的df1
有600行,而我的df2
有700000行,因此我出现了内存错误。请允许我尝试一些更新技术以获得帮助,但仍然存在内存错误。我将尝试以不同的方式构造数据帧。祝你好运!我很乐意帮忙,谢谢。这适用于较小的数据帧,但我的df1
有600行,而我的df2
有700000行,因此我出现了内存错误。请允许我尝试一些更新技术以获得帮助,但仍然存在内存错误。我将尝试以不同的方式构造数据帧。祝你好运!我很乐意帮忙