如果我有分区数据,并且要使用
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)
这会返回一个空数据框。可以用过滤器实现吗?
你可以这样做:
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