2017-02-17 3 views
1

나는 이미 a question을 요청했지만 백만 개의 행이있는 파일에 대해 다음 코드를 실행할 때 문제가 있습니다.예상 문자열, int found 큰 파일에서 pandas 데이터 프레임을 사용하는 동안

코드 :

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을 받고있다?

이 모든 것을 문자열로 변환 할 수있는 방법이 있습니까?

샘플 데이터 : (이 식별자는 알파 숫자입니다) 당신은 agg 기능의 람다 식을 작성할 수 있습니다

ID1 Some_other_id1 
ID2 Some_other_id2 

답변

1

는 변환 할 수 있습니다 :

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 NKS가 일했다. 하지만 다른 하나의 문자열 열을 다른 파일에 그것을 시도 할 때 같이 오류를 제공합니다 : 파일 "grouping-data.py", 줄 11 df = df [ 'ASIN'] .style (str) .groupby (df [ 'ORDER_ID']) .gg (','. join) .reset_index() 파일 "/Library/Python/2.7/site-packages/pandas/core/frame.py", 2059 줄, __getitem__ return self ._getitem_column (key) 파일 "/Library/Python/2.7/site-packages/pandas/core/frame.py", 줄 2066, _getitem_column에 있음 return self._get_item_cache (key) 파일 "/ 라이브러리 /Python/2.7 /site-packages/pandas/core/generic.py ", 줄 1386, in _get_item_cache values ​​= sel – user2696258

+0

나는 이것이 무엇인지 모릅니다. 어쩌면 명령에 실패한 일부 데이터를 공유 할 수 있습니다. – Psidom