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行,因此我出现了内存错误。请允许我尝试一些更新技术以获得帮助,但仍然存在内存错误。我将尝试以不同的方式构造数据帧。祝你好运!我很乐意帮忙