次の pandas Dataframe を整理する最も効率的な方法は何ですか?
データ =
Position Letter
1 a
2 b
3 c
4 d
5 e
のような辞書にalphabet[1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e']
?
次の pandas Dataframe を整理する最も効率的な方法は何ですか?
データ =
Position Letter
1 a
2 b
3 c
4 d
5 e
のような辞書にalphabet[1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e']
?
In [9]: pd.Series(df.Letter.values,index=df.Position).to_dict()
Out[9]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
速度比較 (Wouter 法を使用)
In [6]: df = pd.DataFrame(randint(0,10,10000).reshape(5000,2),columns=list('AB'))
In [7]: %timeit dict(zip(df.A,df.B))
1000 loops, best of 3: 1.27 ms per loop
In [8]: %timeit pd.Series(df.A.values,index=df.B).to_dict()
1000 loops, best of 3: 987 us per loop
次の df でテストされた他の 2 つの方法を次に示します。
df = pd.DataFrame(np.random.randint(0,10,10000).reshape(5000,2),columns=list('AB'))
使用してto_records()
dict(df.to_records(index=False))
使用してMultiIndex.from_frame()
dict(pd.MultiIndex.from_frame(df))
それぞれの時間。
24.6 ms ± 847 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
1.86 ms ± 11.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)