Как я могу избавиться от "array [], dtype = ' - PullRequest
0 голосов
/ 26 апреля 2020

Я делаю код для анализа частот продаж различных продуктов (StockCode), поэтому вот код для получения частот:

stockCode = df['StockCode'].values.tolist()

non_repeated_list = []
frequencies = []
list2d= []

for i in stockCode:
    if i not in non_repeated_list:
        non_repeated_list.append(i)

for i in non_repeated_list:
    a = stockCode.count(i)
    frequencies.append(a)

И затем складываем оба списка в двухмерный список с list2d = np.column_stack((non_repeated_list, frequencies)), чтобы я мог отсортировать их с:

print(sorted(list2d,key=lambda x:x[-1], reverse=True))

Но когда я распечатываю его, он говорит:

[array(['22139', '993'], dtype='<U12'), array(['22911', '99'], dtype='<U12'), array(['17012D', '99'], dtype='<U12')...

Поэтому я хотел спросить, как я могу получить только строки между []?

1 Ответ

0 голосов
/ 26 апреля 2020

Поскольку вы не предоставили минимальный воспроизводимый пример, я попытаюсь воссоздать его.

Я предполагаю, df - это кадр данных, а df['StockCode'] - это Series, содержащий строки:

In [287]: ds = pd.Series(['one','two','one','three','two'])                                            
In [288]: ds                                                                                           
Out[288]: 
0      one
1      two
2      one
3    three
4      two
dtype: object

тогда мы получим список строк:

In [289]: x = ds.values.tolist()                                                                       
In [290]: x                                                                                            
Out[290]: ['one', 'two', 'one', 'three', 'two']

и найдем уникальные:

In [291]: alist = []                                                                                   
In [292]: for i in x: 
     ...:     if i not in alist: 
     ...:         alist.append(i) 
     ...:                                                                                              
In [293]: alist                                                                                        
Out[293]: ['one', 'two', 'three']

и посчитаем их:

In [294]: freq = []                                                                                    
In [295]: for i in alist: 
     ...:     freq.append(x.count(i)) 
     ...:                                                                                              
In [296]: freq                                                                                         
Out[296]: [2, 2, 1]

column_stack из двух строк создает 2d массив, строка dtype:

In [297]: np.column_stack((alist, freq))                                                               
Out[297]: 
array([['one', '2'],
       ['two', '2'],
       ['three', '1']], dtype='<U21')

column_stack не может создать список или массив массивов, поэтому вы должны делать что-то большее.

Python sorted будет обрабатывать массив как список, так же, как `list (..) или понимание списка в массиве 2d:

In [298]: [a for a in _]                                                                               
Out[298]: 
[array(['one', '2'], dtype='<U21'),
 array(['two', '2'], dtype='<U21'),
 array(['three', '1'], dtype='<U21')]

Вы можете воссоединиться с массивами с:

In [299]: np.vstack(_)                                                                                 
Out[299]: 
array([['one', '2'],
       ['two', '2'],
       ['three', '1']], dtype='<U21')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...