1
有沒有更好的方法來做下面的代碼在(slow!)循環中做的事情?Python - 從熊貓到稀疏輸出格式
使用輸入DataFrame,我想將其轉換爲每個用戶消耗的產品列表。但是這個列表將長達數百萬年,這似乎相當低效(除非我使用cython)。任何想法如何使這個更蟒蛇開心? 謝謝!
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
給出了這樣的輸出(這正是我的願望):
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'屬性。 –