我想将此系列转换为一个唯一列表,其中包含每条评论中出现的每个单词,例如:
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/