1

以下のコードが (遅い!) ループで行うより良い方法はありますか?

入力 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
4

1 に答える 1