2017-11-07 1 views
0

필자는 쉼표로 구분 된 .csv 파일에 해당 필드 (쉼표가 포함 된 텍스트, 소수 자릿수 등)가 포함되어 있습니다. 데이터의 모양은 실제로 데이터 프레임이므로 나중에 팬더를 사용하게 될 것입니다. 팬더로 파일을 읽거나 탭으로 구분 된 .txt 파일 또는 JSON 파일로 변환하는 방법은 무엇입니까?.csv 파일을 해당 필드 내에 쉼표로 JSON/TXT로 변환

파일 크기는 3,5 MB이며 약 700 줄입니다. 아래는 헤더와 두 줄의 데이터 예제입니다. 파일에는 빈 줄이 없습니다. 여기에서 한 번 더 쉽게 읽을 수 있도록했습니다. 데이터가 웹에서 스크래핑되면서 두 개의 변수 (응답 및 요청 URL)를 삭제해야했습니다.

Tehnicne_podrobnosti, RESPONSE_DATE, RESPONSE_TIME

"Klikni ZA povečavo Dodaj 브이 primerjavo Dodatne의 slike : 인텔 펜티엄 듀얼 코어 G4560"BOX "Redna의시나 : 67,63 € Spletna 요금부터 : 62,62 € Prihranek : 5,01 € 가라 Pentium® Dual-CoreJedro : Kaby Lake 프로세서 프로세서 : 3500 MHz 프로세서 : 소켓 1151 기술 용어 : 0.014 μm 권장 : 3072 kBFrekvenca FSB/HT : 듀얼 코어 프로세서 : 인텔 코어 프로세서 프로세서 인텔 펜티엄 G4560은 14 개의 나노 미터 프로덕션 프로세스에서 Kaby 호수를 보여줍니다. Deluje na frekvenci 3.5 GHz. 3MB 캐쉬 프리픽스. 54W (TDP) 에너지를 소비합니다. 인텔 ® HD 그래픽 610, 350 MHz/1,15 GHz 기가비트 이더넷 기가비트 이더넷 기가비트 이더넷 기가비트 이더넷 기가비트 이더넷 기가비트 이더넷 기가비트 Podpira DirectX 12, OpenGL 4.4 이상 4096x2304 @ 60Hz 프리 코 디스플레이 포트 4096x2304 @ 24Hz 프리 코 HDMI 1.4. GPU Freecvenca : 1050 MHz * Tip GPU : HD Graphics 610 (포드 포라 DirectX 12) * TDP : 54 W * 포드 포라 (Podpora) * 포드 포라 (Podpora) DDR3L : 1333/1600 MHz @ 1.35V * Podpora DDR4 : 2133/2400 MHz * MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, TSX, SGX, VT-x ","05.26.2017 ","10:01:50 "

"Intel Core ™ i5 7400 "BOX"Redena Cena : 213,06 € 셉터 : 197,29 € Prihranek : 15,77 € : 39 MHz EAN : 5032037092982 코어 프로세서 : Core ™ i5Jedro : Kaby 레이크 프로세서 프로세서 : 3000 MHz 프로세서 : 소켓 1151 기술 정보 : 0.014 μm 권장 : 6144 kBFrekvenca FSB/HT : 팁 제드라 : 쿼드 코어 Opis : 인텔 코어 i5 프로세서 -7400 Kaby 호수에서 찍은 사진 14 개의 나노 미터 프로 v 네스 프로 세 스에서의 Kaby 호수. 3 GHz, 터보 부스트 기술은 3,5 GHz의 주파수에서 사용할 수 있습니다. 6MB 캐시 6predition. 65W (TDP) 에너지를 소비합니다. 인텔 ® HD 그래픽 630, 350 MHz/1,0 GHz 기가 바이트를 지원합니다. Podpira DirectX 12, OpenGL 4.4 이상 4096x2304 @ 60Hz 프리 코 디스플레이 포트 4096x2304 @ 24Hz 프리 코 HDMI 1.4. Podpira는 3 개의 PCI 익스프레스 라인을 지원합니다.여기서 상기 프로세서에 적절히 저온 부하 프로세서의 주파수를 상승 터보 부스트 2.0의 함수이다. 가속은 jeder.Dodatne이 프로세서 인텔 ® 코어 ™ i5 7400을 제공 obremenenjenih 수에 따라 달라집니다 : * 스레드 수 (스레드) : 4 * GPU 주파수 : 1000 MHz의 GPU의 * 유형 : HD 그래픽 630 * (다이렉트 X 12을 지원하는) 터보 주파수 : 3 5 GHz의 TDP * 65 * W 지원 DDR3L : 1,600분의 1,333 MHz의 @의 1.35V * 지원 DDR4 : 2,400분의 2,133 MHz의 조작법 * : MMX, AES-NI CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, 에 대한 SSE4.1, SSE4.2, AVX는 AVX2, TXT는, TSX, SGX, VT-X, VT는-D ","2017년 5월 26일 ","10시 1분 58초 "

어떤 제안 효율적인 솔루션을 연결?

+0

에서 테스트. 더 많은 것을하고 싶다면 질문을 분명히하십시오. –

+0

당신은 예를 들어, CSV 파일의 처음 몇 줄을 포함하는 질문을 편집 할 경우 도움이 wouldnt한다. –

+0

나는 그것을 편집. 나는 이것이 더 나은 것이기를 바랍니다. –

답변

1

문제는 제대로 이중 인용되지 않도록 "BOX"을 것으로 보인다. 한 가지 해결 방법이 인용을 두 번 할 동안 그 일 후 작성하는 파이썬의 CSV에 전달 wouldnt가 행. 이들은 다음 dataframe에로드 할 수 있습니다 :이 첫 번째 열을 가정하여 작동

import csv 
from StringIO import StringIO 
import pandas as pd 

data = [] 

with open('input.csv', 'r') as f_input: 
    for line_number, raw_row in enumerate(f_input, start=1): 
     cols = raw_row.rsplit(',', 4) 
     cols[0] = '"{}"'.format(cols[0].strip('"').replace('"', '""')) 
     row = next(csv.reader(StringIO(','.join(cols)))) 
     data.append(row) 

df = pd.DataFrame(data[1:], columns=data[0]) 
df['DATE_TIME'] = pd.to_datetime(df.RESPONSE_DATE + " " + df.RESPONSE_TIME, format="%m.%d.%Y %H:%M:%S") 
df.drop(['RESPONSE_DATE', 'RESPONSE_TIME'], axis=1, inplace=True) 

print df 

가 두 번 인용에 문제가 있습니다. 그것은 두 번 바로 원시 행을 분할 첫 번째 열에서 외부 따옴표를 제거하고 "" 모든 "을 대체합니다. 그런 다음 원본 원시 행을 재구성하고 CSV에 전달하여 행을 만듭니다.

을주기 :

       Tehnicne_podrobnosti RESPONSE_CODE  URL   DATE_TIME 
0 Klikni za povečavo Dodaj v primerjavo Dodatne ...   405 http:// 2017-05-26 10:01:50 
1 Klikni za povečavo Dodaj v primerjavo Dodatne ...   404 http:// 2017-05-26 10:01:58 

RESPONSE_DATE하고 또한 RESPONSE_TIME 열 결합과 datetime 객체로 변환되었습니다.

4 즉 네 정상 열과 하나 문제가있다 가정 함께 테스트하려면 응답 코드와 URL을 갖는 두 개의 추가 열을 시뮬레이트했습니다. >`file.txt` -`file.csv` : 파일의 이름을 변경 파이썬 2.x에서

+0

코드는 작동하지만 문제는 **가 제대로 인용을 두 번하지 않는 여러 다른 단어 **을 가지고있다. 변수 "Tehnicne_podrobnosti"** ** 항상 시작 "클릭" - - 다음 변수가 "요청 URL"입니다 ** ** 항상 HTTP "로 시작 : 나는 어쩌면이 사실 도움을 wouldnt 그건 생각하고 있었다 // .. . "나는 그것을 해결하는 방법을 아이디어를 얻을 수 없습니다 ..하지만 . –

+0

나는 희망 지금 모든 비 이중 인용 단어를 작동합니다. –

+0

나는 일한다! 정말 고마워요. –

관련 문제