2016-09-15 11 views
0

私はパンダのデータフレームを持っています。私は潜在的にnull値または文字列値の配列を持つことができる列を持っています。しかし、私はこの列に値を格納する方法を検討することに苦労しています。pandasの列に文字列値の配列を格納しますか?

これが今の私のコードです:

df_completed = df[df.completed] 
df['links'] = None 
for i, row in df_completed.iterrows(): 
    results = get_links(row['nct_id']) 
    if results: 
     df[df.nct_id == row['nct_id']].links = results 
     print df[df.nct_id == row['nct_id']].links 

は、しかし、これは二つの問題があります。resultsは長さ1の配列がある場合は

  • を、印刷出力はそう、配列ではなく、Noneです私は間違った値を保存する必要があると思う
  • resultsが長い配列の場合、値を保存する行はエラーを生成します:ValueError: Length of values does not match length of index

私は間違っていますか?

答えて

0

このようなパンダに配列を格納することをお勧めしますか?配列の内容をシリアル化して保存しようと考えたことはありますか?

配列を格納すると、あなたがとにかく後にしているものであれば、あなたはset_value()方法で試すことができますが、この(あなたが列nct_idのDTYPEの世話をすることを確認してください)のように:

In [35]: df = pd.DataFrame(data=np.random.rand(5,5), columns=list('ABCDE')) 

In [36]: df 
Out[36]: 
      A   B   C   D   E 
0 0.741268 0.482689 0.742200 0.210650 0.351758 
1 0.798070 0.929576 0.522227 0.280713 0.168999 
2 0.413417 0.481230 0.304180 0.894934 0.327243 
3 0.797061 0.561387 0.247033 0.330608 0.294618 
4 0.494038 0.065731 0.538588 0.095435 0.397751 

In [38]: df.dtypes 
Out[38]: 
A float64 
B float64 
C float64 
D float64 
E float64 
dtype: object 

In [39]: df.A = df.A.astype(object) 

In [40]: df.dtypes 
Out[40]: 
A  object 
B float64 
C float64 
D float64 
E float64 
dtype: object 

In [41]: df.set_value(0, 'A', ['some','values','here']) 
Out[41]: 
         A   B   C   D   E 
0 [some, values, here] 0.482689 0.742200 0.210650 0.351758 
1    0.79807 0.929576 0.522227 0.280713 0.168999 
2    0.413417 0.481230 0.304180 0.894934 0.327243 
3    0.797061 0.561387 0.247033 0.330608 0.294618 
4    0.494038 0.065731 0.538588 0.095435 0.397751 

私は願っていますこれは役に立ちます!

関連する問題