简体   繁体   中英

Python: convert elem to list

I have dataframe

category    dictionary
Аксессуары для телефонов (чехлы и т.д.) [u'pad', u'me', u'\u0437', u'mi', u'samsung', u'\u0447\u0435\u0445\u043e\u043b', u'galaxy', u'\u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0439', u'se', u'huawei', u'lenovo', u'\u0447\u0435\u0440\u043d\u044b\u0439', u'iphone', u'lg', u'tab', u'sony', u'pro', u'flip', u'acer', u'ip', u'\u043a\u043e\u0436\u0438', u'htc', u'apple', u'\u0447\u0435\u0445\u043b\u044b', u'xperia', u'\u043a\u043e\u0436\u0430', u'samsung-galaxy-', u'zte', u'asus', u'ice', u'\u043a\u043e\u0436\u0430\u043d\u044b\u0439', u'\u0438\u043c\u043f\u043e\u0440\u0442\u043d\u043e\u0439', u'\u043a\u043d\u0438\u0436\u043a\u0430', u'\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439', u'\u0447\u0435\u0445\u043e\u043b-\u043a\u043d\u0438\u0436\u043a\u0430', u'\u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043a\u043e\u0439', u'\u0444\u043b\u0438\u043f', u'\u0447\u0435\u0445\u043e\u043b-\u0444\u043b\u0438\u043f', u'le', u'"\u0447\u0435\u0445\u043b\u044b']
Монобрендовые страницы с информацией    [u'iphone', u'apple', u'mac', u'os', u'xperia', u'ipad', u'ios', u'pro', u'macos', u'mi', u'miui', u'sony', u'macbook', u'galaxy', u'alcatel', u'lenovo', u'\u0432\u043e', u'app', u'\u043f\u0440\u043e', u'samsung', u'lenovo-', u'watch', u'store', u'itunes', u'plus', u'\u0440\u0435\u043c\u043e\u043d\u0442', u'vs', u'compact', u'""', u'####', u'sierra', u'touch', u'air', u'"\u0437\u0430\u043f\u0438\u0441\u0438', u'"mi', u'"miui', u'note', u'"\u043a\u0430\u043a', u'pixi', u'idol']
Официальные магазины определенных марок [u'mi', u'xiaomi', u'pro', u'redmi', u'philips', u'note', u'apple', u'\u043e\u0441', u'samsung', u'store', u'\u0432\u043e', u'mi4', u'iphone', u'yi', u'\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d', u'mac', u'galaxy', u'\u043a\u0443\u043f\u0438\u0442\u044c', u'\u0438\u043c', u'\u043c\u0430\u0433\u0430\u0437\u0438\u043d', u'\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e', u'\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430', u'32gb', u'mi5', u'63apple', u'se', u'highscreen', u'smart', u'app', u'\u0433\u0431', u'\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430', u'\u0440\u0443\u0431', u'####', u'nillkin', u'16gb', u'\u0437\u0430\u0431\u0440\u0430\u0442\u044c', u'\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435', u'\u0431\u043e\u043b\u044c\u0448\u0435', u'\u043d\u0430\u043b\u0438\u0447\u0438\u0438', u'tv']
 СМИ    [u'02', u'\u043e\u0431\u0437\u043e\u0440', u'google', u'\u044f\u043d\u0434\u0435\u043a\u0441', u'\u043d\u043e\u044f\u0431\u0440\u044c', u'apple', u'\u0447\u0435\u043c', u'microsoft', u'\u044f\u043d\u0434\u0435\u043a\u0441\u0443', u'\u0433\u043e\u0434\u0430', u'\u043f\u043e\u0441\u043b\u0435', u'\u0443\u0436\u0435', u'voyager', u'windows', u'\u0441\u0430\u0439\u0442\u0435', u'plantronics', u'\u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445', u'\u0440\u0443\u0431\u043b\u0435\u0439', u'\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c', u'\u0441\u0438\u0441\u0442\u0435\u043c\u0435', u'\u0441\u0442\u0430\u043b\u043e', u'\u0440\u0430\u0437\u0433\u043e\u043d\u0438\u0442\u0441\u044f', u'\u0440\u043e\u0431\u043e\u043c\u043e\u0431\u0438\u043b\u0438', u'"\u0432\u0438\u0434\u044f\u0449\u0438\u0439"', u'\u043f\u0440\u043e\u0434\u0430\u0436\u0443', u'\u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b', u'\u043f\u043e\u043c\u043e\u0433\u0443\u0442', u'\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f', u'"\u0438\u0433\u0440\u043e\u0432\u0443\u044e', u'\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e\u0439', u'\u0436\u0430\u0440-\u043f\u0442\u0438\u0446\u0430', u'\u0432\u043f\u0435\u0440\u0432\u044b\u0435', u'bluetooth-\u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u044b', u'"\u044f\u043d\u0434\u0435\u043a\u0441\u0443"', u'\u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430']
Телеком-провайдеры  [u'\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442', u'\u0442\u0432', u'\u0431\u0438\u043b\u0430\u0439\u043d', u'####', u'\u0433\u0431', u'\u0443\u0441\u043b\u0443\u0433\u0438', u'tele2', u'\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439', u'\u043d\u043e\u043c\u0435\u0440', u'\u0442\u0440\u0430\u0444\u0438\u043a', u'\u0441\u0432\u044f\u0437\u044c', u'\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430', u'\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b', u'\u0437\u0430\u043a\u0440\u044b\u0442\u044c', u'\u0434\u043e\u043c\u0430', u'\u043c\u0431', u'\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f', u'\xab\u0431\u0438\u043b\u0430\u0439\u043d\xbb', u'\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f', u'****', u'\u043c\u0435\u0441\u044f\u0446', u'\u043e\u0434\u043d\u043e', u'\u0441\u043a\u043e\u043b\u044c\u043a\u043e', u'\u0441\u0447\u0435\u0442', u'\u0442\u0440\u0430\u0444\u0438\u043a\u0430', u'\u043e\u0444\u0438\u0441\u044b', u'\u043f\u043b\u0430\u0442\u0435\u0436', u'\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435', u'\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435', u'\u043a\u0431', u'#####', u'\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439', u'\u043a\u0430\u0440\u0442\u0435', u'\u043c\u043e\u0441\u043a\u0432\u0430', u'\u0441\u0430\u0439\u0442\u0430', u'\u0440\u0435\u0433\u0438\u043e\u043d', u'\u043d\u043e\u043c\u0435\u0440\u0430', u'\u043d\u0443\u0436\u0435\u043d', u'\u0437\u0430\u043a\u0430\u0437\u0430', u'\u043d\u043e\u043c\u0435\u0440\u043e\u0432']
запчасти и ремонт   [u'\u0440', u'ya', u'iphone', u'apple', u'sony', u'samsung', u'samara', u'ipad', u'windows', u'\u0442\u0435\u043b\u0435\u0444\u043e\u043d', u'microsoft', u'\u043e\u0441', u'phone', u'info', u'\u043a\u0443\u043f\u0438\u0442\u044c', u'android', u'\u043f\u0440\u043e', u'store', u'clean', u'ccleaner', u'business', u'\u0437\u0430\u043f\u0447\u0430\u0441\u0442\u0438', u'asus', u'\u0440\u0435\u043c\u043e\u043d\u0442', u'support', u'usb', u'\u0442\u0430\u0447\u0441\u043a\u0440\u0438\u043d', u'\u043a\u0430\u0431\u0435\u043b\u044c', u'mobile', u'\u0434\u0438\u0441\u043f\u043b\u0435\u0439', u'galaxy', u'--', u'4s', u'pro', u'over', u'\u0447\u0435\u0440\u043d\u044b\u0439', u'6s', u'device', u'\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435', u'imei']
интернет-агрегатор (market.yandex.ru, price.ru, etc.) - не работает какмагазин, но пересылает на сайты магазинов    [u'shopotam', u'onliner', u'shop', u'shopozz', u'galaxy', u'le', u'\u043a\u043e', u'ki', u'samsung', u'\u0442\u0435', u'mi', u'kimovil', u'\u0432\u043e', u'\u0442\u043e\u0432\u0430\u0440', u'phone', u'smart', u's4', u'smartphones', u'pro', u'amazon', u'\u0442\u0432', u'price', u'best', u'buy', u'gb', u'max', u'\u043a\u043b\u0438\u0435\u043d\u0442', u'compare', u'core', u'xiaomi', u'\u0442\u043e\u0432\u0430\u0440\u044b', u'note', u'de', u'2gb', u'\u043d\u0430\u0437\u0430\u0434', u'\u0430\u0432\u0442\u043e', u'iphone', u'freakscore', u'ebay', u'\u0442\u043e\u043c']

I need to print elements from the list. But when I try to print it with

for category, words in zip(df.category.values.tolist(),    df.dictionary.values.tolist()):
    for word in words:
         print word

it returns every element like this

[
u
'
p
a
d
'
,

u
'

I checked type of it and it return unicode . What should I do to print elem from these lists?

Faster solution withitertools.chain() from this answer :

from  itertools import chain

df = pd.DataFrame({'category':['a','d','f','g'],
                    'dictionary':[['af','dg','ff'],['gg','hy','jj'],
                                  ['kg','hl','gu'], ['he','jr']]})

print (df)   
  category    dictionary
0        a  [af, dg, ff]
1        d  [gg, hy, jj]
2        f  [kg, hl, gu]
3        g      [he, jr]

L = list(chain.from_iterable(df.dictionary))
print (L)
['af', 'dg', 'ff', 'gg', 'hy', 'jj', 'kg', 'hl', 'gu', 'he', 'jr']

for x in L:
    print (x)
af
dg
ff
gg
hy
jj
kg
hl
gu
he
jr

Timings :

In [94]: %timeit (list(chain.from_iterable(df.dictionary)))
The slowest run took 4.92 times longer than the fastest. This could mean that an intermediate result is being cached.
10000 loops, best of 3: 17.2 µs per loop

In [95]: %timeit (df.dictionary.apply(pd.Series).stack().tolist())
1000 loops, best of 3: 1.5 ms per loop

EDIT:

It seems your list only seems as list, but it is string.

One posible solution for converting this string to list is ast :

import pandas as pd
import ast
from  itertools import chain

df = pd.read_excel('WORDS.xlsx')

df.dictionary = df.dictionary.apply(ast.literal_eval)
print (df) 
                                             category  \
0             Аксессуары для телефонов (чехлы и т.д.)   
1                Монобрендовые страницы с информацией   
2             Официальные магазины определенных марок   
3                                                 СМИ   
4                                  Телеком-провайдеры   
5                                   запчасти и ремонт   
6   интернет-агрегатор (market.yandex.ru, price.ru...   
7                                    интернет-магазин   
8   информационный ресурс: нельзя ничего купить, е...   
9                             не подходит по тематике   
10                       ошибка при открытии страницы   
11              поисковая машина: yandex, google, etc   
12                                 сайты по перекупке   
13         сайты производителей с возможностью купить   
14                    сайты производителей смартфонов   
15                                            соцсеть   

                                           dictionary  
0   [pad, me, з, mi, samsung, чехол, galaxy, фирме...  
1   [iphone, apple, mac, os, xperia, ipad, ios, pr...  
2   [mi, xiaomi, pro, redmi, philips, note, apple,...  
3   [02, обзор, google, яндекс, ноябрь, apple, чем...  
4   [интернет, тв, билайн, ####, гб, услуги, tele2...  
5   [р, ya, iphone, apple, sony, samsung, samara, ...  
6   [shopotam, onliner, shop, shopozz, galaxy, le,...  
7   [id, т, po, aliexpress, цен, те, л, aport, мо,...  
8   [н, е, android, apple, во, app, pro, forum, ph...  
9   [р, т, е, во, н, м, л, de, д, п, ко, г, те, б,...  
10  [org, 01, open, ne, 02, ma, lightspeed, •, ноя...  
11  [class, icon, yahoo, link, mozilla, me, firefo...  
12  [купить, москве", pro, olx, de, з, avito, "", ...  
13  [microsoft, windows, device, mp, devices, sim,...  
14  [microsoft, philips, cu, mi, hd, rx, ms, tv, v...  
15  [me, livejournal, п, ru, д, нравится, во, чита... 
print (list(chain.from_iterable(df.dictionary)))
['pad', 'me', 'з', 'mi', 'samsung', 'чехол', 'galaxy', 
'фирменный', 'se', 'huawei', 'lenovo', 'черный', 'iphone', 
'lg', 'tab', 'sony', 'pro', 'flip', 'acer', 'ip', 'кожи',
 'htc', 'apple', 'чехлы', 'xperia', 'кожа', 'samsung-galaxy-', 
 'zte', 'asus', 'ice', 'кожаный', 'импортной',...

you can convert your lists to pd.Series first and then stack it:

In [98]: df.dictionary.apply(pd.Series).stack()
Out[98]:
0  0                                                        u'pad'
   1                                                         u'me'
   2                                                     u'\u0437'
   3                                                         u'mi'
   4                                                    u'samsung'
   5                             u'\u0447\u0435\u0445\u043e\u043b'
   6                                                     u'galaxy'
   7     u'\u0444\u0438\u0440\u043c\u0435\u043d\u043d\u044b\u0439'
   8                                                         u'se'
   9                                                     u'huawei'
   10                                                    u'lenovo'
   11                      u'\u0447\u0435\u0440\u043d\u044b\u0439'
   12                                                    u'iphone'
   13                                                        u'lg'
   14                                                       u'tab'
   15                                                      u'sony'
   16                                                       u'pro'
   17                                                      u'flip'
   18                                                      u'acer'
   19                                                        u'ip'
   20                                  u'\u043a\u043e\u0436\u0438'
   21                                                       u'htc'
   22                                                     u'apple'
   23                            u'\u0447\u0435\u0445\u043b\u044b'
   24                                                    u'xperia'
                                   ...
6  15                                                     u'smart'
   16                                                        u's4'
   17                                               u'smartphones'
   18                                                       u'pro'
   19                                                    u'amazon'
   20                                              u'\u0442\u0432'
   21                                                     u'price'
   22                                                      u'best'
   23                                                       u'buy'
   24                                                        u'gb'
   25                                                       u'max'
   26                      u'\u043a\u043b\u0438\u0435\u043d\u0442'
   27                                                   u'compare'
   28                                                      u'core'
   29                                                    u'xiaomi'
   30                      u'\u0442\u043e\u0432\u0430\u0440\u044b'
   31                                                      u'note'
   32                                                        u'de'
   33                                                       u'2gb'
   34                            u'\u043d\u0430\u0437\u0430\u0434'
   35                                  u'\u0430\u0432\u0442\u043e'
   36                                                    u'iphone'
   37                                                u'freakscore'
   38                                                      u'ebay'
   39                                        u'\u0442\u043e\u043c'

If you need a vanilla Python list:

df.dictionary.apply(pd.Series).stack().tolist()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM