>

엑셀 시트에서 문자열을 가져 와서 단어로 분할 한 다음 인쇄하거나 새 문자열로 다시 쓰려고하지만 팬더를 사용하여 데이터를 검색하고 분할하려고하면 데이터 프레임이 작동하지 않는다는 오류가 발생합니다. t 분할 기능 지원

엑셀 시트에 다음 줄이 있습니다 :

예상하고 다음과 같이 출력합니다 :

import numpy
import pandas as pd
df = pd.read_excel('eng.xlsx')
txt = df
x = txt.split()
print(x)

AttributeError: 'DataFrame' object has no attribute 'split'


  • 답변 # 1

    split() 를 신청하고 있기 때문입니다  DataFrame에서 작동하지만 불가능합니다.

    import pandas as pd
    import numpy as np
    def append_nan(x, max_len):
        """
        Function to append NaN value into a list based on a max length
        """
        if len(x) < max_len:
            x += [np.nan]*(max_len - len(x))
        return x
    # I define here a dataframe for the example
    #df = pd.DataFrame(['This is my first sentence', 'This is a second sentence with more words'])
    df = pd.read_excel('your_file.xlsx', index=None, header=None)
    col_names = df.columns.values.tolist()
    df_output = df.copy()
    # Split your strings
    df_output[col_names[0]] = df[col_names[0]].apply(lambda x: x.split(' '))
    # Get the maximum length of all yours sentences
    max_len = max(map(len, df_output[col_names[0]]))
    # Append NaN value to have the same number for all column
    df_output[col_names[0]] = df_output[col_names[0]].apply(lambda x: append_nan(x, max_len))
    # Create columns names and build your dataframe
    column_names = ["word_"+str(d) for d in range(max_len)]
    df_output = pd.DataFrame(list(df_output[col_names[0]]), columns=column_names)
    # Then you can save it
    df_output.to_excel('output.xlsx')
    
    

관련 자료

  • 이전 코 틀린 코 루틴 멀티 런칭
  • 다음 swing - Java에서 테이블을 어떻게 아래쪽으로 이동할 수 있습니까?