【问题标题】:Storing processed text in pandas dataframe将处理后的文本存储在熊猫数据框中
【发布时间】:2018-12-06 08:00:55
【问题描述】:

我使用 gensim 在 Python 中进行文本摘要。我希望我的汇总输出存储在同一数据框中的不同列中。

我用过这段代码:

for n, row in df_data_1.iterrows():
        text=df_data_1['Event Description (SAP)']
        print(text)
        *df_data_1['Summary']=summarize(text)*
print(df_data_1['Summary'])

此代码的第 4 行出现错误,其中指出:TypeError: expected string or bytes-like object。

如何将处理后的文本存储在 pandas 数据框中

【问题讨论】:

  • 在这段代码之前是否已经存在“摘要”?如果没有,请查看此相关问题stackoverflow.com/questions/39873995/…
  • 即使这没有出错,我认为最终结果将是最后一个循环的汇总函数的输出将出现在汇总列的每一行中,因为 pandas 允许您同时编辑所有行。在第 4 行中,您只是说汇总列中每一行的值应该是函数的相同单个字符串输出。请参阅下面使用 .apply 逐行应用此函数的答案。

标签: python loops gensim


【解决方案1】:

如果它不是字符串或类似字节的,那是什么?您可以检查汇总函数的类型并从那里继续。

test_text = df_data_1['Event Description (SAP)'].iloc[0]
print(type(summarize(test_text))

另一句话:通常您希望避免循环遍历数据帧(请参阅discussion)。如果要将函数应用于整个列,请使用df.apply(),如下所示:

df_data1[‘Summary’] = df_data1['Event Description (SAP)'].apply(lambda x: summarize(x))

【讨论】:

  • 是的,这会返回字符串,但是当我尝试输入 df_data_1['Summary']=summarize(text);它抛出了那个错误
  • 试试 df_data1['Summary'] = df_data1['Event Description (SAP)'].apply(lambda x: summarise(x))
  • 我添加了你的建议
猜你喜欢
  • 2018-03-20
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
相关资源
最近更新 更多