如果我有一个已分区的数据,并且我要使用pd.read_parquet中的filters参数进行过滤,我如何才能实现这一目标?例如:

import pandas as pd


data = {
    "ID": [1, 2, 3],
    "Value": ["A", "B", "C"]
}
df = pd.DataFrame(data)


parquet_folder = "example_partitioned"
df.to_parquet(parquet_folder, index=False, partition_cols=["Value"])

所以我已经在磁盘上分区了数据 struct .如果我构造这样的过滤条件,它就会起作用:

filter_conditions = [
    ("Value", "==", "A")
]


pd.read_parquet(parquet_folder, filters=filter_conditions)

但如果我想要多个条件(即A OR B),以下内容不起作用:

filter_conditions_two = [
    ("Value", "==", "A"),
    ("Value", "==", "B")
]

pd.read_parquet(parquet_folder, filters=filter_conditions_two)

相反,这会返回空数据帧.这可以通过过滤器吗?

推荐答案

您可以这样做:

import pandas as pd

data = {
    "ID": [1, 2, 3],
    "Value": ["A", "B", "C"]
}

df = pd.DataFrame(data)

parquet_folder = "example_partitioned"

df.to_parquet(parquet_folder, index=False, partition_cols=["Value"])

filter_conditions = [("Value", "in", ["A", "B"])]
filtered_df = pd.read_parquet(parquet_folder, filters=filter_conditions)
print(filtered_df)

这给

   ID Value
0   1     A
1   2     B

同样,如果您的收件箱有另一列Category,您也在其上应用了分区,则您会这样做

filter_conditions = [("Value", "in", ["A", "B"]), ("Category", "A1", "A2
")]

Python相关问答推荐

调查TensorFlow和PyTorch性能的差异

重命名变量并使用载体中的字符串存储 Select 该变量

Flask:如何在完整路由代码执行之前返回验证

如何使用关键参数按列对Pandas rame进行排序

如何使用PyTest根据self 模拟具有副作用的属性

如果AST请求默认受csref保护,那么在Django中使用@ system_decorator(csref_protect)的目的是什么?

在for循环中仅执行一次此操作

剧作家Python没有得到回应

计算相同形状的两个张量的SSE损失

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

根据在同一数据框中的查找向数据框添加值

如何检测背景有噪的图像中的正方形

rame中不兼容的d类型

Pytest两个具有无限循环和await命令的Deliverc函数

查找两极rame中组之间的所有差异

Python解析整数格式说明符的规则?

Python—从np.array中 Select 复杂的列子集

在极性中创建条件累积和

driver. find_element无法通过class_name找到元素'""