使用 pandas read_parquet 对分区列进行过滤的多个条件

问题描述 投票:0回答:1

如果我有分区数据,并且要使用

filters
中的
pd.read_parquet
参数进行过滤,我该如何实现这一点?例如:

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", "==", "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)

这会返回一个空数据框。可以用过滤器实现吗?

python pandas parquet
1个回答
0
投票

你可以这样做:

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
© www.soinside.com 2019 - 2024. All rights reserved.