#python #pandas
#python #панды
Вопрос:
Как получить следующий вывод списка списков из фрейма данных:
Входной фрейм данных:
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'),
(',', ',')]]
Список разбивается всякий раз, когда есть разделитель ,
Комментарии:
1. Внутренний список содержит пару 1-го и 2-го столбцов
Ответ №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. Внешний список содержит несколько внутренних списков, которые разделяются всякий раз, когда есть какой-либо разделитель, как показано в строке 6
Ответ №2:
Использовать:
g = df.isin([',', '.']).any(axis=1).shift(fill_value=0).cumsum()
L = df.groupby(g).apply(lambda x: [tuple(x) for x in x.to_numpy()]).tolist()
print (L)
[[('if', 'IN'), ('trade', 'NN'), ('figures', 'NNS'), ('for', 'IN'), ('September', 'NNP'), (',', ',')],
[('due', 'JJ'), ('for', 'IN'), ('release', 'NN'), ('tomorrow', 'NN'), (',', ',')]]
Комментарии:
1. Внешний список содержит несколько внутренних списков, которые разделяются всякий раз, когда есть какой-либо разделитель, например, или .