>

df로 작업하고 numpy를 사용하여 공백 (또는``) 설정을 포함하여 데이터를 NaN으로 변환합니다. 그러나 df를 csv에 쓸 때 출력에는 NULL이 아닌 'nan'문자열이 포함됩니다.

둘러 보았지만 실행 가능한 솔루션을 찾을 수 없습니다. 기본적인 문제는 다음과 같습니다.

df
index x    y   z
0     1   NaN  2
1     NaN  3   4

CSV 출력 :

index x    y   z
0     1   nan  2
1     nan  3   4

'nan'을 NULL로 설정하기 위해 몇 가지 시도를했지만 csv 출력은 NULL이 아닌 'blank'가됩니다.

dfDemographics = dfDemographics.replace('nan', np.NaN)
dfDemographics.replace(r'\s+( +\.)|#', np.nan, regex=True).replace('', 
np.nan)
dfDemographics = dfDemographics.replace('nan', '')  # of course, this wouldn't work, but tried it anyway.

도움을 주시면 감사하겠습니다.


  • 답변 # 1

    구조에 대한 팬더, na_rep 사용  NaN에 대한 자신의 표현을 고치기 위해.

    df.to_csv('file.csv', na_rep='NULL')
    
    

    file.csv

    ,index,x,y,z
    0,0,1.0,NULL,2
    1,1,NULL,3.0,4
    
    

  • 답변 # 2

    df.replace를 사용하면 도움이 될 수 있습니다-

    df = df.replace(np.nan, '', regex=True)
    df.to_csv("df.csv", index=False)
    
    

    (이것은 모든 null 값을 ''즉 빈 문자열로 설정합니다.)

  • 답변 # 3

    @coldspeed 사용자는 pd.DataFrame을 저장할 때 nan 값을 NULL로 바꾸는 방법을 보여줍니다. 데이터 분석을 위해 pd.DataFrame의 "NULL"값을 np.NaN 값으로 바꾸려는 경우 다음 코드가 수행됩니다.

    import numpy as np, pandas as pd
    # replace NULL values with np.nan
    colNames = mydf.columns.tolist()
    dfVals = mydf.values
    matSyb = mydf.isnull().values
    dfVals[matSyb] = np.NAN
    mydf = pd.DataFrame(dfVals, columns=colNames)    
    #np.nansum(mydf.values, axis=0 )
    #np.nansum(dfVals, axis=0 )
    
    

관련 자료

  • 이전 swift - 수신자 부담 전화 번호로 AG를 반환하는 PhoneNumberKit
  • 다음 android - gson 협상 요청 오브젝트에서 선택적 필드 설정