[PYTHON] 문자열에서 팬더 DataFrame 만들기
PYTHON문자열에서 팬더 DataFrame 만들기
일부 기능을 테스트하기 위해 문자열에서 DataFrame을 만들고 싶습니다. 내 테스트 데이터가 다음과 같다고 가정 해 보겠습니다.
TESTDATA="""col1;col2;col3
1;4.4;99
2;4.5;200
3;4.7;65
4;3.2;140
"""
그 데이터를 팬더 데이터 프레임으로 읽는 가장 간단한 방법은 무엇입니까?
해결법
-
==============================
1.이 작업을 수행하는 간단한 방법은 StringIO를 사용하여 pandas.read_csv 함수에 전달하는 것입니다. 예 :
이 작업을 수행하는 간단한 방법은 StringIO를 사용하여 pandas.read_csv 함수에 전달하는 것입니다. 예 :
import sys if sys.version_info[0] < 3: from StringIO import StringIO else: from io import StringIO import pandas as pd TESTDATA = StringIO("""col1;col2;col3 1;4.4;99 2;4.5;200 3;4.7;65 4;3.2;140 """) df = pd.read_csv(TESTDATA, sep=";")
-
==============================
2.일반적인 가변 폭 CSV는 데이터를 문자열 변수로 저장하기 위해 읽을 수 없습니다. 고정 너비의 파이프로 구분 된 데이터를 대신 고려하십시오. 다양한 IDE와 편집기에는 파이프로 구분 된 텍스트를 깔끔한 테이블로 포맷하는 플러그인이있을 수 있습니다.
일반적인 가변 폭 CSV는 데이터를 문자열 변수로 저장하기 위해 읽을 수 없습니다. 고정 너비의 파이프로 구분 된 데이터를 대신 고려하십시오. 다양한 IDE와 편집기에는 파이프로 구분 된 텍스트를 깔끔한 테이블로 포맷하는 플러그인이있을 수 있습니다.
다음은 나를 위해 일한다. 이를 사용하려면 pandas_util.py라는 파일에 저장하십시오. 예제는 함수의 docstring에 포함되어있다. 3.6 이전의 Python 버전을 사용하는 경우 함수 정의 행에서 유형 주석을 삭제하십시오.
import re import pandas as pd def read_pipe_separated_str(str_input: str) -> pd.DataFrame: """Read a Pandas object from a pipe-separated table contained within a string. Example: | int_score | ext_score | eligible | | | 701 | True | | 221.3 | 0 | False | | | 576 | True | | 300 | 600 | True | The leading and trailing pipes are optional, but if one is present, so must be the other. In PyCharm, the "Pipe Table Formatter" plugin has a "Format" feature that can be used to neatly format a table. """ substitutions = [ ('^ *', ''), # Remove leading spaces (' *$', ''), # Remove trailing spaces (r' *\| *', '|'), # Remove spaces between columns ] if all(line.lstrip().startswith('|') and line.rstrip().endswith('|') for line in str_input.strip().split('\n')): substitutions.extend([ (r'^\|', ''), # Remove redundant leading delimiter (r'\|$', ''), # Remove redundant trailing delimiter ]) for pattern, replacement in substitutions: str_input = re.sub(pattern, replacement, str_input, flags=re.MULTILINE) return pd.read_csv(pd.compat.StringIO(str_input), sep='|')
from https://stackoverflow.com/questions/22604564/create-pandas-dataframe-from-a-string by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 배열에 파이썬 csv 문자열 (0) | 2018.10.02 |
---|---|
[PYTHON] Python + Selenium을 사용하여 iframe을 선택하십시오. (0) | 2018.10.02 |
[PYTHON] Selenium : driver.quit ()를 호출하지 않고 geckodriver 프로세스가 PC 메모리에 영향을 미치지 않게하는 방법? (0) | 2018.10.02 |
[PYTHON] Pandas Series / DataFrame 전체를 멋지게 인쇄하십시오. (0) | 2018.10.02 |
[PYTHON] 하나의 키에 대해 다중 값을 사전에 추가 [duplicate] (0) | 2018.10.02 |