2017-11-01 9 views
3

私はリストのデータフレームがあると、以下の収率 DataFrame内のリストに要素を追加する方法は?

my_df = pd.DataFrame({'my_list':[[45,12,23],[20,46,78],[45,30,45]]}) 

  my_list 
0 [45, 12, 23] 
1 [20, 46, 78] 
2 [45, 30, 45] 

私は要素を追加することができますどのように、のは、各行についてmy_listに、99を言ってみましょうか?

期待される結果:

  my_list 
0 [45, 12, 23, 99] 
1 [20, 46, 78, 99] 
2 [45, 30, 45, 99] 

答えて

2

はひどく退屈に聞こえるが、ちょうど直接値を反復 - 大幅に高速なものを作り、あなたがappendを呼び出し、+=で起こるものは何でも再バインド回避することができますこの方法。あなたが本当に内部のリストを持っている必要がある場合

for val in my_df.my_list: 
    val.append(99) 

デモは

もちろん
>>> import timeit 
>>> setup = ''' 
import pandas as pd; import numpy as np 
df = pd.DataFrame({'my_list': np.random.randint(0, 100, (500, 500)).tolist()}) 
''' 

>>> min(timeit.Timer('for val in df.my_list: val.append(90)', 
        setup=setup).repeat(10, 1000)) 
0.05669815401779488 

>>> min(timeit.Timer('df.my_list += [90]', 
        setup=setup).repeat(10, 1000)) 
2.7741127769695595 

、速度が(または速度でない場合でも)あなたにとって重要である、あなたが質問する必要がある場合データフレーム。あなたはパンダユーティリティと

np.c_[arr, np.full(arr.shape[0], 90)] 

または少なくともような何かの列を区切るためにDATAFRAME内のあなたのリストを分割し、新しい列を割り当てることをやってを必要とするまで、numpyの配列に取り組んで考えてみましょう。

+0

これは素晴らしいです!時間は私の心配です。 –

+0

@GF問題はありません、もう少し詳しく私の編集を見てください。 – miradulo

+0

追加する値が別の列から来た場合はどうしますか?たとえば、df ['to_add'] = 99. –

4
In [90]: my_df['my_list'] += [99] 

In [91]: my_df 
Out[91]: 
      my_list 
0 [45, 12, 23, 99] 
1 [20, 46, 78, 99] 
2 [45, 30, 45, 99] 
+0

あまりにも簡単です。ありがとう!!私はリストの追加機能を持つソリューションを見つけようとして迷っていました。 –

+0

@GF、私が助けることができてうれしいよ:) – MaxU

関連する問題