gbi*_*977 7 python pandas parquet
import pandas as pd
df = pd.DataFrame({
"col1" : ["a", "b", "c"],
"col2" : [[1,2,3], [4,5,6,7], [8,9,10,11,12]]
})
df.to_parquet("./df_as_pq.parquet")
df = pd.read_parquet("./df_as_pq.parquet")
[type(val) for val in df["col2"].tolist()]
Run Code Online (Sandbox Code Playgroud)
输出:
[<class 'numpy.ndarray'>, <class 'numpy.ndarray'>, <class 'numpy.ndarray'>]
Run Code Online (Sandbox Code Playgroud)
有什么方法可以读取 parquet 文件并获取 pythonic 列表形式的列表值(就像创建时一样)?最好使用pandas但愿意尝试替代方案。
我面临的问题是,我事先不知道哪些列包含列表,因此我检查类型的方式与我在代码中所做的类似。假设我当前对添加 numpy 作为依赖项不感兴趣,有什么方法可以检查变量是否类似于数组而无需显式导入和指定np.ndarray?
无论是将 parquet 文件加载到箭头表中还是将箭头表转换为 pandas时,您都无法在 API 中更改此行为。
但是您可以编写自己的函数来查看箭头表的模式并将每个list字段转换为 python 列表
import pyarrow as pa
import pyarrow.parquet as pq
def load_as_list(file):
table = pq.read_table(file)
df = table.to_pandas()
for field in table.schema:
if pa.types.is_list(field.type):
df[field.name] = df[field.name].apply(list)
return df
load_as_list("./df_as_pq.parquet")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1905 次 |
| 最近记录: |