如何从Pandas DataFrame按句子生成嵌套列表?
如何将分组的DataFrame转换为两种嵌套列表格式?
没问题!针对你这个需求,咱们可以用Pandas的分组聚合功能轻松实现,下面给你两种对应的解决方案:
方案1:生成仅包含单词的嵌套列表
这个需求很直接,咱们按sent_id分组后,把每个组里的word列直接拼成列表就行:
import pandas as pd # 假设你的DataFrame变量名为df word_nested_list = df.groupby('sent_id')['word'].apply(list).tolist() print(word_nested_list) # 输出结果: # [['Stack', 'overflow', 'is', 'great'], ['Luv', 'you', 'guys'], ['Thank', 'you']]
思路说明:
- 用
groupby('sent_id')把同一句子的所有行归为一组 - 对每个组的
word列调用list(),把单词整合为列表 - 最后用
.tolist()把分组后的Series对象转换成咱们需要的嵌套列表格式
方案2:生成包含(单词, 词性标签)元组的嵌套列表
这个需要把每组的word和pos_tag一一配对成元组,再整合成列表:
tuple_nested_list = df.groupby('sent_id').apply( lambda group: list(zip(group['word'], group['pos_tag'])) ).tolist() print(tuple_nested_list) # 输出结果: # [[('Stack', 'noun'), ('overflow', 'noun'), ('is', 'verb'), ('great', 'adjective')], [('Luv', 'verb'), ('you', 'pronoun'), ('guys', 'noun')], [('Thank', 'verb'), ('you', 'pronoun')]]
思路说明:
- 同样先按
sent_id分组 - 用
lambda函数处理每个分组的子DataFrame,用zip()把每组的word和pos_tag对应打包成元组,再转成列表 - 最后用
.tolist()转换为目标嵌套列表格式
内容的提问来源于stack exchange,提问作者DanielFloor
相关产品推荐
相关产品推荐

