首页 > 解决方案 > 将 df 转换为列表列表

问题描述

如何从数据框中获取列表列表的以下输出:

输入数据框:

     0          1
0   if         IN
1   trade      NN   
2   figures    NNS
3   for        IN
4   September  NNP
5   ,          ,
6   due        JJ   
7   for        IN
8   release    NN
9   tomorrow   NN
10  ,          ,

输出列表:

[[('if', 'IN'),
 ('trade', 'NN'),
 ('figures', 'NNS'),
 ('for', 'IN'),
 ('September', 'NNP'),
 (',', ',')],
 [('due', 'JJ'),
 ('for', 'IN'),
 ('release', 'NN'),
 ('tommorow', 'NN'),
 (',', ',')]]

只要有分隔符,列表就会拆分,

标签: pythonpandas

解决方案


修改后的答案:基于关于拆分的评论,一旦有分隔符',', ','

outputList = list([[]])
ind = 0
for value in df.values:
    value = tuple(value)
    outputList[ind].append(value)
    if (value == (',', ',')):
        outputList.append(list([]))
        ind += 1

#remove last empty inner list which is empty    
outputList.pop()

输出:

[[('if', 'IN'), ('trade', 'NN'), ('figures', 'NNS'), ('for', 'IN'), ('September', 'NNP'), (',', ',')], [('due', 'JJ'), ('for', 'IN'), ('release', 'NN'), ('tomorrow', 'NN'), (',', ',')]]

第一个答案

为了将数据帧转换为元组数组,您可以:

outputList = [[tuple(value) for value in df.values]]
outputList

输出:

[[('if', 'IN'), ('trade', 'NN'), ('figures', 'NNS'), ('for', 'IN'), ('September', 'NNP'), (',', ','), ('due', 'JJ'), ('for', 'IN'), ('release', 'NN'), ('tomorrow', 'NN'), (',', ',')]]

推荐阅读