2014-11-05 18 views
0

각 요소가 DataFrame의 행에 대한 함수 인 팬더 계열을 만들어야합니다. 특히 json 문자열 인 '메타 데이터'열이 있으며 json과 나머지 열의 dicts 시리즈가 필요합니다. 이팬더 매핑 팬더에 DataFrame 행

을 복사 할 수 있습니다 :

편집

df.map(lambda row: json.loads(row.metadata).update({'timestamp':row.timestamp})) 

(업데이트를 파괴하고 새로운 딕셔너리를 반환하지 않습니다하지만 당신은 요점을 파악) : 이상적으로는 dataframe에 대한지도 방법에 상응하는 뭔가를 원하는 것

metadata timestamp 
"{'a':1,'b':2}" 000000001 
"{'a':1,'c':2}" 000000002 
"{'a':1,'c':2}" 000000003 

그리고 pandas.Series 위스콘신되어야

In [8]: import pandas as pd 

In [9]: pd.read_clipboard() 
Out[9]: 
     metadata timestamp 
0 {'a':1,'b':2}   1 
1 {'a':1,'c':2}   2 
2 {'a':1,'c':2}   3 

원하는 결과로로드 이 목록의 내용 :

[{"a":1,"b":2,"timestamp":000000001} 
{"a":1,"c":2,"timestamp":000000002} 
{"a":1,"c":2,"timestamp":000000003}] 
+2

당신이 작은 예를 들어 데이터 집합을 게시 할 수 : 생산

new_metadata = df.apply(lambda x: '{}\b,"timestamp":{}}}'.format(x.metadata,x.timestamp),axis=1) 

: 같은 뭔가? 이상적으로 이것은 복사 할 수 있고'pandas.read_clipboard()'로 즉시로드 할 수 있습니다 (직접 테스트 해보십시오) – Marius

답변

1

문자열을 수정하는 것은 어떨까요?

In [1]: new_metadata 
Out[2]: 
0 {'a':1,'b':2,"timestamp":1} 
1 {'a':1,'c':2,"timestamp":2} 
2 {'a':1,'c':2,"timestamp":3} 
+0

물론 문자열로 재생하여 타임 스탬프의 0을 생성 할 수 있습니다. 어떤 규칙인지는 모르겠습니다. – Daniele

+0

을 따라야합니다. 키 - 값지도가 시리즈에 저장되지만 차라리이 경우에 유용합니다. 고맙습니다 – fakedrake