1
(느린!) 루프에서 아래 코드가 수행하는 더 좋은 방법이 있습니까?Python - Pandas에서 Sparse 출력 형식
입력 된 DataFrame을 사용하여 각 사용자가 소비 한 제품 목록으로 변환하려고합니다. 하지만이 목록은 수백만에 달할 것이고 이것은 (내가 cython을 사용하지 않는다면) 매우 비효율적 인 것처럼 보입니다. 모든 아이디어를 더 python-happy하게 만드는 방법? 감사합니다.
a = pd.DataFrame({'user_id':['a', 'a', 'b', 'c', 'c', 'c'], 'prod_id':['p1', 'p2', 'p1', 'p2', 'p3', 'p7']})
print "Input Dataframe:\n", a
print '\nDesired Output:'
# Build desired output:
uniqIDs = a.user_id.unique()
for id in uniqIDs:
prod_list = list(a[a.user_id == id].prod_id.values)
s = id + '\t'
for x in prod_list:
s += x + '\t'
print s # This will get saved to a TAB DELIMITED file
은 (내가 원하는 정확히입니다)이 출력을 제공합니다 : 당신은
groupby
을 사용할 수
Input Dataframe:
prod_id user_id
0 p1 a
1 p2 a
2 p1 b
3 p2 c
4 p3 c
5 p7 c
Desired Output:
a p1 p2
b p1
c p2 p3 p7
좋은 @DSM으로 보입니다. 대괄호를 제거하고 탭으로 구분 된 출력으로 끝내는 효율적인 방법이 있습니까? – zbinsd
@zbinsd'Series' 객체의'str' 속성을 확인하십시오. –