【问题标题】:How do I edit a Tensorflow dataset in a Pandas DataFrame?如何在 Pandas DataFrame 中编辑 Tensorflow 数据集?
【发布时间】:2021-05-05 12:26:53
【问题描述】:

我正在尝试为抽象文本摘要任务构建一个转换器模型。我的数据集是 CNN DM,我正在尝试将这些功能放在 pandas DataFrame 上。

我的代码:

pip install tensorflow_datasets
import tensorflow_datasets as tfds

cnn_builder = tfds.summarization.cnn_dailymail.CnnDailymail()
cnn_info = cnn_builder.info
cnn_builder.download_and_prepare()
datasets = cnn_builder.as_dataset()
train_dataset, test_dataset = datasets["train"], datasets["test"]

reviews = pd.DataFrame({'Text':train_dataset['article'] ,'Summary':train_dataset['highlights'] }) 
reviews.head()

但输出是:

TypeError Traceback (most recent call last) <ipython-input-45-2da1e32d8eec> in <module>() ----> 1 reviews = pd.DataFrame({'Text':train_ds['article'] ,'Summary':train_ds['highlights'] }) 2 reviews.head() TypeError: 'PrefetchDataset' object is not subscriptable


修复代码后,我得到了这个输出。你能帮我解决这个问题吗!

b“48 岁的 Richard McLuckie 和 51 岁的 Stuart Mackenzie-Walker 发明了游戏。\n获得 Marmite 所有者联合利华的许可使用其名称和形象。\n然后他们继续投资电视节目,向 Dragons 寻求资金.\n但联合利华的合同规定企业家不能提及 Marmite 的名字。\n三龙退出,但 Peter Jones 和 Duncan Bannatyne 同意了。\n他们向这些人支付了 \xc2\xa350,000 以获得棋盘游戏业务 40% 的股份。 "

【问题讨论】:

  • 请提供完整的错误输出。
  • TypeError Traceback (最近一次调用最后一次) in () ----> 1 个评论 = pd.DataFrame({'Text':train_ds[ 'article'] ,'Summary':train_ds['highlights'] }) 2 reviews.head() TypeError: 'PrefetchDataset' object is not subscriptable

标签: python pandas tensorflow nlp tensorflow-datasets


【解决方案1】:

你可以使用as_dataframe方法。

reviews = tfds.as_dataframe(train_dataset.take(10))

或者你可以遍历数据集得到articlehighlights

highlights = []
articles = []

for article_highlight in train_dataset.take(10):
  articles.append(article_highlight['article'].numpy())
  highlights.append(article_highlight['highlights'].numpy())

reviews = pd.DataFrame({'Text':articles ,'Summary':highlights })

在您的情况下,请注意train_dataset.take(10) 将从数据集中获取 10 个元素。

【讨论】:

  • 谢谢@Frightera 这个代码真的很有帮助:)
  • 有人能帮我吗?我得到了这个输出(b"Richard McLuckie,48 岁,Stuart Mackenzie-Walker,51 岁,发明了游戏。\\n获得 Marmite 所有者联合利华的许可使用其名称和图像.\\n然后他们去投资电视节目向Dragons寻求资金。\\n但联合利华合同上说企业家不能提及Marmite的名字。\\n三龙退出,但Peter Jones和Duncan Bannatyne同意了。\\ n他们向男人支付了 \\xc2\\xa350,000 以获得棋盘游戏业务 40% 的股份。”)
猜你喜欢
  • 2020-09-08
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2011-01-12
相关资源
最近更新 更多