如何用PyArrow从Parquet文件中获取字典类型的取值?
获取PyArrow中Parquet字典类型列的取值
要拿到DictionaryType列的字典取值,核心是先读取对应列的DictionaryArray实例,再通过它的.dictionary属性提取取值,具体操作如下:
方法1:读取整个表后提取目标列
import pyarrow.parquet as pq # 读取Parquet文件为Table对象 table = pq.read_table('dummy_file.parquet') # 获取目标列的DictionaryArray dict_col_array = table['dummy_column'] # 提取字典中的所有取值 dict_values = dict_col_array.dictionary # 转成Python列表查看结果 print(dict_values.to_pylist())
方法2:仅读取目标列(更高效)
如果文件体积较大,只读取需要的列能节省内存和读取时间:
import pyarrow.parquet as pq # 仅读取指定列 table = pq.read_table('dummy_file.parquet', columns=['dummy_column']) dict_col_array = table['dummy_column'] dict_values = dict_col_array.dictionary print(dict_values.to_pylist())
补充说明
- 仅通过schema只能知道列是
DictionaryType以及它的value类型(比如例子里的string),但无法拿到实际的字典取值——因为字典的具体值是存储在数据文件中的,必须读取数据才能获取。 .dictionary返回的是一个PyArrow Array对象,用.to_pylist()可以转成Python原生列表方便使用。
内容的提问来源于stack exchange,提问作者In78
相关产品推荐
相关产品推荐

