python - 数据框的子集,其中两列等于两个列表

标签 python pandas

我有多个数据框,每个数据框大约有 500 万行。 每个数据框都有两列,分别称为 BC。此外,我还有两个值列表,其中第一个列表中的索引 0 对应于第二个列表中的索引 0。

我需要做的是获取完整数据框的一个子集,但两个列表中的值对于该特定索引都是真实的。

所以基本上:

df = 

A      B      C
------------------
val1   val2   val3
val4   val5   val6
val7   val8   val9


list1 = ["val2", "val8"]

list2 = ["val3", "val9"]

然后如果我使用这个:

df.loc[(df['B'] == "val2") & (df['C'] == "val3")]

然后这将返回:

df_new = 

A      B      C
------------------
val1   val2   val3

但我需要它为 list1list2 中的所有列表项执行此操作,因此生成的 df 应该是:

df_new = 

A      B      C
------------------
val1   val2   val3 
val7   val8   val9

我正在考虑创建一个新列 (new_column) 和新列表 (new_list),两个列表名称连接在一起,然后运行:

df[df['new_column'].isin(new_list)]

但我有点担心,考虑到我必须对大约 500 万行和许多不同的数据帧执行此操作,这样效率很低。

是的,这有什么巧妙的技巧吗?

最佳答案

您可以使用列表(list1 和 list2)创建数据框并合并数据框:

u = pd.DataFrame({"B":list1,"C":list2})
df.merge(u)
#[df.merge(u) for df in df_list] for list

      A     B     C
0  val1  val2  val3
1  val7  val8  val9

关于python - 数据框的子集,其中两列等于两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67269166/

相关文章:

python - 将 groupby 结果直接合并回数据框

python - Python 对数函数的精度

python - Pandas 区域图插值/步骤样式

python - 将 pandas 中的多列合并为一列

python - Spark Python Pyspark 如何用字典数组和嵌入式字典展平列(sparknlp 注释器输出)

python - 根据列值选择用户 - pandas dataframe

python - 以相同的顺序重复列表的元素

python - OpenCV cv2.ellipse 扩展到更难的情况

Python Aiohttp Asyncio : how to create delays between each task

python - 推断 Pandas DataFrame