在一些上下文中,我正在对一些数据进行一些文本分析,我刚刚对它们进行了标记,我想组合数据框列中的所有列表以进行进一步处理。
我的 df 是:
df = pd.DataFrame({'title': ['issue regarding app', 'graphics should be better'], 'text': [["'app'", "'load'", "'slowly'"], ["'interface'", "'need'", "'to'", "'look'", "'nicer'"]]})`
我想将“文本”列中的所有列表合并为一个列表,并删除打开/关闭引号。
类似这样的:
lst = ['app', 'load', 'slowly', 'interface', 'need', 'to', 'look', 'nicer']`
感谢您的帮助!
您可以使用
apply
和 lambda
来实现这一点
apply
方法的使用是
将函数应用于每个元素
在 'text'
列中,同时
sum
的功能是
将所有列表连接在一起
lst = sum(df["text"].apply(lambda x: [i.replace("'", "") for i in x]), [])
输出:
['app', 'load', 'slowly', 'interface', 'need', 'to', 'look', 'nicer']
如果你想替换多个元素,比如
"'“
和"a"
,translate
会比replace
更高效:
trans = str.maketrans("", "", "'a")
lst = sum(df["text"].apply(lambda x: [i.translate(trans) for i in x]), [])
使用简单的列表理解:
out = [x.strip("'") for l in df['text'] for x in l]
输出:
['app', 'load', 'slowly', 'interface', 'need', 'to', 'look', 'nicer']
我们还可以迭代系列中的每个列表,并使用append()将它们连接起来,最后使用concat()将它们转换为列表。产生与上面相同的输出。
我相信这也可以通过以下方式完成:
import itertools
lst = list(itertools.chain.from_iterable(df['text'].tolist()))