2016-04-07 17 views
1

データフレーム内の特定のセルの値を変更したいだけですが、set_valueを使用しました。しかし、set_valueを使うたびに、データフレーム全体が1回リストされます。データフレームのサイズが大きく(10百万行以上)、プロセスがエネルギーと時間を浪費します。 プラットフォーム:Spyder(Python 2.7)Python Pandas set_valueはデータフレーム全体を表示します

助言に感謝します!

+0

データフレームのサンプルと出力を追加できますか? – jezrael

答えて

1

それはあなたが望むものですか?

In [69]: df 
Out[69]: 
    a b c 
0 8 6 2 
1 9 9 6 
2 1 7 9 
3 9 0 6 
4 0 6 7 
5 9 3 4 
6 4 6 5 
7 8 3 4 
8 0 8 9 
9 7 2 8 

In [70]: df.ix[5, 'a'] = 100 

In [71]: df 
Out[71]: 
    a b c 
0 8 6 2 
1 9 9 6 
2 1 7 9 
3 9 0 6 
4 0 6 7 
5 100 3 4 
6 4 6 5 
7 8 3 4 
8 0 8 9 
9 7 2 8 

の代わり:

In [72]: df.set_value(9, 'a', 100) 
Out[72]: 
    a b c 
0 8 6 2 
1 9 9 6 
2 1 7 9 
3 9 0 6 
4 0 6 7 
5 100 3 4 
6 4 6 5 
7 8 3 4 
8 0 8 9 
9 100 2 8 

あなたも、このようにそれを行うことができます。

In [73]: df = df.set_value(9, 'a', 100) 
+0

ありがとうございました!できます。 –

+0

@CarlZheng、喜んで助けてください。あなたの質問に答えた場合は、最も役立つ回答を[承諾する](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)してください。答えた。 – MaxU

1

set_valueは非常に高速です。インタラクティブなセッションの長さは、出力を準備する時間です。

In [130]: %timeit u.set_value(0,0,3) 
10000 loops, best of 3: 41.9 µs per loop 

In [131]: %timeit u.ix[0,0]=2 
1000 loops, best of 3: 745 µs per loop 

2番目の方法では表示を禁止します。

+0

ありがとうございました!第二の方法は私が望むものです。 –

関連する問題