복붙노트

[PYTHON] 판다를 사용하여 행당 다른 수의 열로 CSV 가져 오기

PYTHON

판다를 사용하여 행당 다른 수의 열로 CSV 가져 오기

Pandas 또는 CSV 모듈을 사용하여 각 행에 대해 다른 수의 열을 가진 CSV를 Pandas DataFrame으로 가져 오는 최상의 방법은 무엇입니까?

"H","BBB","D","Ajxxx Dxxxs"
"R","1","QH","DTR"," "," ","spxxt rixxls, raxxxd","1"

이 코드 사용 :

import pandas as pd
data = pd.read_csv("smallsample.txt",header = None)

다음 오류가 생성됩니다.

Error tokenizing data. C error: Expected 4 fields in line 2, saw 8

해결법

  1. ==============================

    1.read_csv ()에서 열 이름 목록을 제공하면 트릭을 수행해야합니다.

    read_csv ()에서 열 이름 목록을 제공하면 트릭을 수행해야합니다.

    예 : 이름 = [ 'a', 'b', 'c', 'd', 'e']

    https://github.com/pydata/pandas/issues/2981

    편집 : 열 이름을 제공하지 않으려면 Nicholas가 제안한 것을 수행하십시오.

  2. ==============================

    2.우리는 pd.read_table () 메서드를 사용하여 csv 파일을 읽을 수도 있습니다.이 파일은 단일 열의 DataFrame 유형으로 변환되며 ','

    우리는 pd.read_table () 메서드를 사용하여 csv 파일을 읽을 수도 있습니다.이 파일은 단일 열의 DataFrame 유형으로 변환되며 ','

  3. ==============================

    3.간단한 카운터 (0, 1, 2 등)로 동적으로 열 이름을 생성 할 수 있습니다.

    간단한 카운터 (0, 1, 2 등)로 동적으로 열 이름을 생성 할 수 있습니다.

    동적으로 열 이름 생성

    # Input
    data_file = "smallsample.txt"
    
    # Delimiter
    data_file_delimiter = ','
    
    # The max column count a line in the file could have
    largest_column_count = 0
    
    # Loop the data lines
    with open(data_file, 'r') as temp_f:
        # Read the lines
        lines = temp_f.readlines()
    
        for l in lines:
            # Count the column count for the current line
            column_count = len(l.split(data_file_delimiter)) + 1
    
            # Set the new most column count
            largest_column_count = column_count if largest_column_count < column_count else largest_column_count
    
    # Close file
    temp_f.close()
    
    # Generate column names (will be 0, 1, 2, ..., largest_column_count - 1)
    column_names = [i for i in range(0, largest_column_count)]
    
    # Read csv
    df = pandas.read_csv(data_file, header=None, delimiter=data_file_delimiter, names=column_names)
    # print(df)
    

    누락 된 값은 CSV 행에 값이없는 열에 지정됩니다.

  4. from https://stackoverflow.com/questions/27020216/import-csv-with-different-number-of-columns-per-row-using-pandas by cc-by-sa and MIT license