python - 将 Pandas 系列文本隐藏为单词列表

标签 python pandas

我有一个 pandas 系列,每一行都有一个文本评论: series example

我想将此系列转换为一个唯一列表,其中包含每条评论中出现的每个单词,例如:

s = [['那个', '披萨', '是', '好吧'...], ['我', '爱', '这个', '地点', '我的', '未婚夫'、'和'、'我'、'走'...]]

预期输出:

s = ['那个', '披萨', '是', '好吧'..., '我', '爱', '这个', '地点', '我的', '未婚夫', '和'、'我'、'走'...]

我尝试过使用tolist()并执行一些循环,但我肯定错过了一些东西。解决这个问题的好方法是什么?

最佳答案

使用列表理解和扁平化:

out = [y for x in df['tokens'] for y in x]

或者使用itertools.chain :

from  itertools import chain
out = list(chain.from_iterable(df['tokens']))

性能:

np.random.seed(123)
N = 10000
L = list('abcdefghijklmno')

df = (pd.DataFrame({'A': np.random.choice(L, N),
                   'B':np.random.randint(1000, size=N)})
      .groupby('B')['A'].apply(list).to_frame('tokens'))
print (df)

In [269]: %timeit df['tokens'].sum()
15.1 ms ± 1.41 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [270]: %timeit out = [y for x in df['tokens'] for y in x]
360 µs ± 15.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [271]: %timeit out = list(chain.from_iterable(df['tokens']))
215 µs ± 1.51 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

关于python - 将 Pandas 系列文本隐藏为单词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55005326/

相关文章:

python - 使用 Pandas 数据框时,如果不存在,如何添加列?

python - 如何根据特定分布将 DataFrame 观察值分配给组?

python - 如何解析 "ValueError: Shape of passed values is (228, 1), indices imply (228, 7)"

python - XML 到 Pandas 数据框

python - 在 Gnome Shell 中显示通知

python - 如何在 Python 中使用子进程重定向输出?

python - pipenv 无法在 Mac OS X 10.10.6 El Capitan 上的 Python 2.7.10 上正确安装

python - 根据数据的特征是否相交对数据进行分组

python - 对两列进行排序并使用 pandas 为数据框中的排序值创建新列

python - Pandas ,过滤列包含另一列的行