Транспонировать строки списков в Python - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть набор данных с именами 'df_list'.Первые три строки моего списка, как показано ниже:

print(df_list[0]) = ['walter', ' extra', ' is', ' a', ' german', ' award-winning', ' aerobatic', ' pilot', '', ' chief', ' aircraft', ' designer', ' and', ' founder', ' of', ' extra', ' flugzeugbau', ' -LRB-', ' extra', ' aircraft', ' construction', ' -RRB-', '', ' a', ' manufacturer', ' of', ' aerobatic', ' aircraft', ' .']

print(df_list[1]) = ['NN', ' JJ', ' VBZ', ' DT', ' JJ', ' JJ', ' JJ', ' NN', ' ', ' NN', ' NN', ' NN', ' CC', ' NN', ' IN', ' JJ', ' NN', ' -LRB-', ' JJ', ' NN', ' NN', ' -RRB-', ' ', ' DT', ' NN', ' IN', ' JJ', ' NN', ' .']

print(df_list[2]) = ['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']

Что я пытаюсь получить в качестве вывода;

df_list[:7] = [('walter', 'NN', 'O'),
               (' extra', ' JJ', 'O'),
               (' is', ' VBZ', 'O'),
               (' a', ' DT', 'O'),
               (' german', ' JJ', 'O'),
               (' award-winning', ' JJ', 'O'),
               (' aerobatic', ' JJ', 'O')]

Я попробовал приведенный ниже код, который нашел здесь Переставить список списков , но он не сработал и дал мне следующий результат:

list(map(list, zip(*df_list)))

df_list [0] = ['walter', 'NN', 'O', 'аарон ',' NN ',' O ',' majda ',' NN ',' O ',' linda ',' NN ',' O ',' craig ',' NN ',' O ',' joseph ', 'NN', 'O', 'henrik', 'NN', 'O', 'tony', 'JJ', 'O', 'john', 'NN', 'O', 'larisa', 'NN ',' O ',' Jon ',' NN ',' O ',' Christian ',' JJ ',' O ',' Hussain ',' NNP ',' O ',' italo ',' NN ', 'O', 'mausami', 'NN', 'O', 'james', 'NNS', 'O', 'roger', 'NN', 'O', 'herbert', 'NN', 'О ',' Артур ',' NN ',' O ',' emanuelis ',' NN ',' O ',' piet ',' NN ',' O ',' ward ',' VB ',' O ', 'eddio', 'NN', 'O', 'carlene', 'NN', 'O', 'presley', 'NN', 'O', 'james', 'NNS', 'O', 'джордж ',' NN ',' O ',' llewellyn ',' NN ',' O ',' kia ',' NN ',' O ',' james ',' NNS ',' O ',' james ', 'NNS', 'O', 'timmy', 'NN', 'O', 'john', 'NN', 'O', 'heddy', 'NN', 'O', 'vester', 'NN ','О ',' Джордон ',' НН ',' О ',' Уолтер ',' НН ',' О ',' Джон ',' НН ',' О ',' Роберт ',' НН ',' О ', 'ma', 'NN', 'O', 'mark', 'NN', 'O', 'jole', 'NN', 'O', 'samu', 'FW', 'O', 'thambiah ',' NN ',' O ',' cliff ',' NN ',' O ',' harold ',' NN ',' O ',' william ',' NN ',' O ',' sheila ', 'NN', 'O', 'tanya', 'NN', 'O', 'ryan', 'NN', 'O']

Короче говоря;

my_df = [['walter',' extra',' is'],['NN',' JJ',' VBZ'],['O','O','O']]

my_df_output = [('walter',' NN','O'),(' extra',' JJ','O'),(' is',' JJ','O')]

Цените любую возможную поддержку.Заранее спасибо.

1 Ответ

0 голосов
/ 02 декабря 2018
>>> import itertools
>>> import pprint
>>> p = list(map(list, itertools.zip_longest(*df_list)))
>>> pprint.pprint(p[:7])
[['walter', 'NN', 'O'],
 [' extra', ' JJ', 'O'],
 [' is', ' VBZ', 'O'],
 [' a', ' DT', 'O'],
 [' german', ' JJ', 'O'],
 [' award-winning', ' JJ', 'O'],
 [' aerobatic', ' JJ', 'O']]
...