将df转换为列表列表

时间:2020-11-11 07:50:14

标签: python pandas

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

输入数据框:

     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'),
 (',', ',')]]

只要有定界符,

,该列表就会拆分

2 个答案:

答案 0 :(得分:1)

修改后的答案:基于关于一旦存在',', ','分隔符时进行拆分的评论:

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'), (',', ',')]]

答案 1 :(得分:0)

使用:

local function evenly(number, items)
    local space = math.floor((#items-1) / (number-1))
    for i=1,#items,space do
        print(items[i])
    end
end

evenly(5, {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20})