【发布时间】:2021-06-05 05:40:28
【问题描述】:
全部。我正在使用 nps_chat 语料库进行个人 NLP/NLU 项目。我正在努力确定提出的所有问题,然后做一些进一步的分析。
这是一个相当大的数据集,格式如下:
Data columns (total 4 columns):
# Column Dtype
--- ------ -----
0 episode int64
1 episode_order int64
2 speaker object
3 utterance object
dtypes: int64(2), object(1)
对于每一集,说话者的一系列话语在 episode_order 列中排序。
我已经对每个话语进行了句子标记,并确定了每个话语中的任何问题。这些问题作为列表存储在称为“问题”的第 5 列中。大多数行都有一个空列表 [],其他行的范围从一个问题的列表到一系列问题的列表。
我要解决的问题: 我想在话语包含多个问题的行中拉长数据框。在一行包含多个问题的每个位置,我想:
- 只保留原始行中提出的第一个问题
- 在原始行下方添加额外的行,每行包含列表中的剩余问题之一。该行是原始行中所有列的副本,但“问题”列包含下一个问题。
--感谢下面回答的用户-- 这是我想要实现的目标。
import pandas as pd
df = pd.DataFrame(
{
"episodes" : [1, 2],
"utterance": ["hey", "ho"],
"questions": [['Where?', "Who?"], ["What?", "When?"]]
}
)
df
>>>
episodes utterance questions
0 1 hey [Where?, Who?]
1 2 ho [What?, When?]
episodes utterance questions
0 1 hey Where?
0 1 hey Who?
1 2 ho What?
1 2 ho When?
对此最好的方法是什么?我正在尝试通过应用/lambda 解决方案进行思考。我还考虑过依次遍历数据框并制作一整集,将其传递给一个函数,按照描述拉长它并返回它......然后将其附加到一个新的数据框。此数据集中有 3M 行,因此可能需要一段时间。
感谢任何建议。谢谢!
【问题讨论】:
-
您的问题不清楚。请edit 提供minimal reproducible example,包括示例输入、预期输出和您迄今为止尝试过的代码,以便我们更好地了解如何提供帮助。请参阅How to make good pandas examples