2016-09-15 93 views
0

我有一個熊貓數據框。我有一列可能有空值或字符串值的數組。但是,我在處理如何在此列中存儲值時遇到問題。在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的陣列,打印輸出是無,而不是陣列中,所以我想我必須保存錯誤的值
  • results是一個較長的數組時,我保存該值的行會產生一個錯誤:ValueError: Length of values does not match length of index

我在做什麼錯?

回答

0

我不確定嘗試在這樣的熊貓中存儲數組是否可取,是否考慮嘗試序列化數組內容然後存儲?

如果存儲陣列是你反正以後是什麼,那麼你就可以用set_value()方法試試,像這樣(請確保您nct_id列的D型的護理):

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 

希望這有助於!