2017-10-18 3 views
0

다음은 사전 목록입니다. 내가 데이터 프레임에 사전의 목록을 변환하거나 행에 키와 값 열을 만들려고 할 때파이썬의 데이터 프레임에 사전 목록에 오류가 있습니다.

content = ['{"a": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E; 360SE)", "c": "US", "nk": 0, "tz": "America/Los_Angeles", "g": "1lj67KQ", "h": "1xupVE6", "mc": 807, "u": "https://cdn.adf.ly/js/display.js", "t": 1427288399, "cy": "Mountain View"}\n', 
'{"a": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E; 360SE)", "c": "US", "nk": 0, "tz": "America/New_York", "g": "1lj67KQ", "h": "1xupVE6", "mc": 514, "u": "https://cdn.adf.ly/js/display.js", "t": 1427288399, "cy": "Buffalo"}\n'] 

, 나는 'TypeError: string indices must be integers' 오류 메시지가 무엇입니까.

방법 : 1

for x in content: 

    print (x["a"], x["nk"]) 

방법 : 2

result = [] 

sumlist = ["a", "nk"] 
for d in content: 

     result.append({"col1": d["a"], 
        "col2": d['nk']}) 

print (result) 

답변

3

옵션 1
그것은 실제로 JSON 당신 사용 json_normalize + json.loads.

df = pd.io.json.json_normalize([json.loads(x) for x in content]) 
print(df) 
                a c    cy \ 
0 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ... US Mountain View 
1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT ... US  Buffalo 

     g  h mc nk   t     tz \ 
0 1lj67KQ 1xupVE6 807 0 1427288399 America/Los_Angeles 
1 1lj67KQ 1xupVE6 514 0 1427288399  America/New_York 

            u 
0 https://cdn.adf.ly/js/display.js 
1 https://cdn.adf.ly/js/display.js 

당신이 원하는 모든 ank, 경우 사용

df = pd.DataFrame.from_dict(content)[['a', 'nk']] 

옵션 2
ast.literal_eval합니다. 주위를 볼

import ast 

content = [ast.literal_eval(x) for x in content] 
df = pd.DataFrame.from_dict(content) 

print(df)              
                a c    cy \ 
0 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ... US Mountain View 
1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT ... US  Buffalo 

     g  h mc nk   t     tz \ 
0 1lj67KQ 1xupVE6 807 0 1427288399 America/Los_Angeles 
1 1lj67KQ 1xupVE6 514 0 1427288399  America/New_York 

            u 
0 https://cdn.adf.ly/js/display.js 
1 https://cdn.adf.ly/js/display.js 
+0

니스 (- :! – piRSquared

+0

돌아 오니 안녕하세요 니스를 @piRSquared –

+0

@JayDhanki 추가 된 또 다른 방법은, 빠른 너무 수 있습니다 모두를 시도하고 답변이 도움이된다면 무엇을 당신을 위해 일하는 참조하십시오... 감사합니다. –

관련 문제