2017-07-31 93 views
1

我有一個df,它由100行和24列組成。列類型是字符串。當我試圖將數據幀追加到KDB熊貓將數據幀轉換爲Utf-8

UnicodeEncodeError: 'ascii' codec can't encode character '\xd3' in position 9: ordinal not in range(128) 

它扔我下面的錯誤這裏是我的DF第一排的一個例子。

     AnnouncementDate AuctionDate BBT \ 
_id 
00000067 2012-12-11T00:00:00.000+00:00   NaN FHLB 

      CouponDividendRate DaysToSettle \ 
_id 
00000067     0.61   1 

             Description \ 
_id 
00000067       FHLB 0.61 12/28/16 

        FirstSettlementDate   ISN IsAgency IsWhenIssued \ 
_id 
00000067 2012-12-28T00:00:00.000+00:00 US313381K796  True  False 


      ... OnTheRunTreasury OperationalIndicator \ 
_id  ... 
00000067 ...    NaN    False 


      OriginalAmountOfPrincipal OriginalMaturityDate \ 
_id 
00000067     13000000.0     NaN 


      PrincipalAmountOutstanding  SCSP  SMCP \ 
_id 
00000067       0.0 313381K79 76000000 

      SecurityTypeLevel1 SecurityTypeLevel2 TCK 
_id 
00000067   US-DOMESTIC    NaN NaN 

我的問題是,有沒有一種簡單的方法我df爲UTF-8格式轉換?

可能像df = df.encode('utf-8')

感謝

+1

在某些時候你填充數據幀,怎麼樣?解決這個問題的最簡單方法是從開始發送正確的值。此外,與df.head()。to_dict()共享一個小樣本。 –

+0

df從json對象填充。它使用json_normalize自動完成。 –

+0

請在使用json_normalize之前嘗試使用https://stackoverflow.com/questions/33699343/convert-every-dictionary-value-to-utf-8-dictionary-comprehension或使用https://pandas.pydata.org/pandas- docs/stable/generated/pandas.read_json.html並將編碼設置爲utf8 – MedAli

回答

1

你如何輸出數據情況而定。如果你只是使用CSV文件,然後您可以導入到KDB,那麼你可以很容易地指定:

df.to_csv('df_output.csv', encoding='utf-8') 

或者,您可以設置編碼,當您導入數據到大熊貓本來,使用相同的語法。

如果您使用的SQLAlchemy或類似的東西直接連接到KDB,你應該嘗試在連接本身指定此 - 看這個問題:Another UnicodeEncodeError when using pandas method to_sql with MySQL