モチベーション
多くのデータセットは、速度/効率に関して懸念する必要があるほど大きくなっています。だから、私はその解決策をその精神で提供します。それはまた、簡潔であることも起こります。比較のために
、またあることを起こる、私はzip
の使用を提案し、理解
list(zip(*[df[c].values.tolist() for c in df]))
[('2012-02-17', 24.75, 25.03),
('2012-02-16', 25.0, 25.07),
('2012-02-15', 24.99, 25.15),
('2012-02-14', 24.68, 25.05),
('2012-02-13', 24.62, 24.77),
('2012-02-10', 24.38, 24.61)]
ますのは、index
コラム
df = data_set.drop('index', 1)
ソリューション
をドロップしてみましょう特定の列のサブセットを処理したい場合は柔軟性があります。既に表示されている列は、必要な部分集合であると仮定します。
list(zip(*[df[c].values.tolist() for c in ['data_date', 'data_1', 'data_2']))
[('2012-02-17', 24.75, 25.03),
('2012-02-16', 25.0, 25.07),
('2012-02-15', 24.99, 25.15),
('2012-02-14', 24.68, 25.05),
('2012-02-13', 24.62, 24.77),
('2012-02-10', 24.38, 24.61)]
すべて以下が同じ結果
[tuple(x) for x in df.values]
df.to_records(index=False).tolist()
list(map(tuple,df.values))
list(map(tuple, df.itertuples(index=False)))
0を生成します
速いとは?
zip
と理解に大きなマージン
%timeit [tuple(x) for x in df.values]
%timeit list(map(tuple, df.itertuples(index=False)))
%timeit df.to_records(index=False).tolist()
%timeit list(map(tuple,df.values))
%timeit list(zip(*[df[c].values.tolist() for c in df]))
小さなデータ
10000 loops, best of 3: 55.7 µs per loop
1000 loops, best of 3: 596 µs per loop
10000 loops, best of 3: 38.2 µs per loop
10000 loops, best of 3: 54.3 µs per loop
100000 loops, best of 3: 12.9 µs per loop
大規模データ
10 loops, best of 3: 58.8 ms per loop
10 loops, best of 3: 43.9 ms per loop
10 loops, best of 3: 29.3 ms per loop
10 loops, best of 3: 53.7 ms per loop
100 loops, best of 3: 6.09 ms per loop
2017+でこの回答になる人には、[新しい慣用的な解決策](https://stackoverflow.com/a/34551914/3707607)があります。あなたは 'list(df.itertuples(index = False、name = None))'を使用することができます。 –