python - 如何使用另一个数据帧的 pandas 查询结果来过滤 pandas 数据帧

标签 python python-3.x pandas dataframe

我有一个pandas df:

import pandas as pd
df = pd.DataFrame({'col_a' : ['a','a', 'b'], 'col_b': [1,2,3]})
df.index = [4,5,6]

在此df上我应用了一个查询:

df_subset = df.query('col_a == "b"')

现在我有第二个数据框,如下所示:

import numpy as np
df_numpy = pd.DataFrame(np.array([0.1,0.2,0.3]))

这与原始的 df 类似,但没有“标识”列 (col_a),并且值以某种方式进行转换(在这个玩具示例中,除以 10) )

我想从 df_numpy 中选择应用查询后从 df 中选择的相同行。在这个玩具示例中是第三行。

编辑 棘手的部分是 df_numpydf 之间的索引值不相同。

有办法做到这一点吗?

最佳答案

如果有相同的索引值,请使用:

print (df_numpy[df_numpy.index.isin(df_subset.index)])    
     0
2  0.3

编辑:一个想法是在两者中创建相同的索引值,因为长度相同:

df = pd.DataFrame({'col_a' : ['a','a', 'b'], 'col_b': [1,2,3]})
df.index = [4,5,6]

df_subset = df.reset_index(drop=True).query('col_a == "b"')

df_numpy = pd.DataFrame(np.array([0.1,0.2,0.3]))


print (df_numpy[df_numpy.reset_index(drop=True).index.isin(df_subset.index)])

     0
2  0.3

关于python - 如何使用另一个数据帧的 pandas 查询结果来过滤 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63669539/

相关文章:

python - Pandas :如何根据不同列的值对列元素的组合进行分组以指示共现?

python - 如何清除QTextEdit的文本并立即插入新文本

python - 使用 webengine 视频和音频编解码器

python-3.x - 如何在 Atom 编辑器中打开命令提示符?

python - aiohttp asyncio.TimeoutError 来自 None 使用 ClientSession

python - Pandas 读取 sql 整数变成 float

python 列表推导集最大长度

python - 正则表达式捕获特定的百分比/小数

Python pd.read_csv : How to read files through a loop?

python - 使用 numpy 读取 csv 文件的主要内存问题