【问题标题】:How to convert a pandas dataframe to a an arrow dataset?如何将熊猫数据框转换为箭头数据集?
【发布时间】:2021-12-21 00:09:40
【问题描述】:

在拥抱脸库中,有一种特殊格式的数据集,称为箭头数据集

https://arrow.apache.org/docs/python/dataset.html

https://huggingface.co/datasets/wiki_lingua

我必须将普通的 pandas 数据帧转换为数据集或将 tabluar csv 文件作为数据集读取。

这可能吗?

【问题讨论】:

  • “数据集”这个词在这里有点含糊。看起来 HuggingFace 有一个数据集nlp.Dataset 的概念,它是(我认为,但不太确定)一个文件。您可以直接从 CSV 创建nlp.Dataset,而无需涉及 pandas 或 pyarrow。 Arrow 还具有数据集 (pyarrow.dataset.Dataset) 的概念,它表示 1 个或多个文件的集合。 @TDrabas 有一个很好的答案来创建其中之一。您也可以直接从 CSV 创建一个pyarrow.dataset.Dataset

标签: pandas pyarrow


【解决方案1】:

您可以创建pyarrow.Table,然后将其转换为Dataset。这是一个例子。

import pyarrow as pa
import pyarrow.dataset as ds
import pandas as pd
from datasets import Dataset

df = pd.DataFrame({'a': [0,1,2], 'b': [3,4,5]})
dataset = ds.dataset(pa.Table.from_pandas(df).to_batches())

### convert to Huggingface dataset
hg_dataset = Dataset(pa.Table.from_pandas(df))

要转换为Table,您只能使用from_pandas(…) 方法,如文档和上面的示例所示。 https://arrow.apache.org/docs/python/pandas.html

对 Huggingface 文档的引用:https://huggingface.co/docs/datasets/package_reference/main_classes.html#dataset

【讨论】:

  • 此外,huggingface 数据集对象本身似乎也有一个from_pandas() (huggingface.co/docs/datasets/loading.html#pandas-dataframe)
  • 我想要数据集而不是表格。 from_dataset 将数据框转换为表格。或者你可以告诉如何将表格转换为数据集?
  • 啊,我错过了。改变了答案。
  • 它说它是一个 pyarrow._dataset.InMemoryDataset 而 wiki_lingua 是一个“datasets.arrows_dataset.Dataset”。如何将内存转换为我需要的?
  • 我认为@Pace 是对的,这里的dataset 一词已加载。但是,您可以将pyarrow.Table 作为参数传递给datasets.Dataset 进行转换。在那里添加了另一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多