2016-09-15 3 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

이런 종류의 팬더에 배열을 저장하는 것이 좋습니다. 배열 내용을 serialize하고 저장하려고 생각한 적이 있습니까?

배열을 저장하면 어쨌든 계신, 다음과 같이 (당신이 열 nct_id의 DTYPE 돌봐 있는지 확인)에 set_value() 방법으로 시도 할 수있는 경우 : I 희망

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 

을 이게 도움이됩니다!

관련 문제