以下のコードが (遅い!) ループで行うより良い方法はありますか?
入力 DataFrame を使用して、各ユーザーが消費した製品のリストに変換したいと考えています。しかし、このリストは何百万もの長さになり、これは非常に非効率的です (cython を使用しない限り)。これをよりPythonに適したものにする方法はありますか? ありがとう!
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