2017-02-17 10 views
1

Я уже спросил a question, но перед выполнением моего кода для файлов с более чем миллионом строк у меня возникла проблема.Ожидаемая строка, int found При использовании pandas dataframe в большом файле

Код:

import numpy as np 
import pandas as pd 
import xlrd 
import xlsxwriter 


df = pd.read_excel('full-cust-data-nonconcat.xlsx') 

df =df.groupby('ORDER_ID')['ASIN'].agg(','.join).reset_index() 

writer = pd.ExcelWriter('PythonExport-Data.xlsx', engine='xlsxwriter') 
df.to_excel(writer, sheet_name='Sheet1') 
writer.save() 

print df 

Ошибка:

Traceback (most recent call last): 
File "grouping-data.py", line 9, in <module> 
df =df.groupby('ORDER_ID')['ASIN'].agg(','.join).reset_index() 
File "/Library/Python/2.7/site-packages/pandas/core/groupby.py", line 2668, in aggregate 
    result = self._aggregate_named(func_or_funcs, *args, **kwargs) 
    File "/Library/Python/2.7/site-packages/pandas/core/groupby.py", line 2786, in _aggregate_named 
    output = func(group, *args, **kwargs) 
TypeError: sequence item 0: expected string, int found 

С момента своего огромного файла, как я могу проверить, где это найти строку и получить Int?

Есть ли способ преобразовать все это в строку сначала?

Sample Data: (эти идентификаторы буквенно-цифровой)

ID1 Some_other_id1 
ID2 Some_other_id2 

ответ

1

Вы можете написать лямбда-выражения в функции agg сделать преобразование:

df.groupby('ORDER_ID')['ASIN'].agg(lambda x: ','.join(x.astype(str)).reset_index() 

Или преобразовать данные типа до агрегирования:

df['ASIN'].astype(str).groupby(df['ORDER_ID']).agg(','.join).reset_index() 
+0

THA НКС ЭТО РАБОТАЕТ. Но когда я пробую его в другом файле с еще одним строковым столбцом, он дает ошибку: Файл «grouping-data.py», строка 11, в df = df ['ASIN']. Astype (str) .groupby (df ['ORDER_ID']). Agg (','. Join) .reset_index() Файл «/Library/Python/2.7/site-packages/pandas/core/frame.py», строка 2059, в __getitem__ return self ._getitem_column (ключ) Файл «/Library/Python/2.7/site-packages/pandas/core/frame.py», строка 2066, в _getitem_column return self._get_item_cache (key) Файл «/Library/Python/2.7 /site-packages/pandas/core/generic.py ", строка 1386, в _get_item_cache values ​​= sel – user2696258

+0

Я не уверен, что это такое, возможно, вы можете поделиться некоторыми вашими данными, которые не выполняют команду. – Psidom

 Смежные вопросы

  • Нет связанных вопросов^_^