Pandas конвертира рамка от данни в Utf-8

Имам df, който се състои от 100 реда и 24 колони. Типът на колоната е низ. Извежда ми следната грешка, когато се опитах да добавя рамката с данни към KDB

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')

Благодаря


person Chris Johnson    schedule 31.07.2017    source източник
comment
В някакъв момент попълнихте рамката с данни, как? Най-лесният начин да разрешите това е да изпратите правилните стойности от самото начало. Също така, споделете малка извадка с df.head().to_dict().   -  person Anton vBR    schedule 31.07.2017
comment
Df се попълва от json обект. Това се прави автоматично с помощта на json_normalize.   -  person Chris Johnson    schedule 31.07.2017
comment
опитайте това stackoverflow.com/questions/33699343/, преди да използвате json_normalize или да използвате pandas.pydata.org/pandas-docs/stable/generated/ и задайте кодиране на utf8   -  person Mohamed Ali JAMAOUI    schedule 01.08.2017


Отговори (1)


Зависи как извеждате данните. Ако просто използвате csv файлове, които след това импортирате в KDB, тогава можете лесно да посочите това:

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

Или можете да зададете кодирането, когато първоначално импортирате данните в Pandas, като използвате същия синтаксис.

Ако се свързвате директно с KDB с помощта на SQLAlchemy или нещо подобно, трябва да опитате да посочите това в самата връзка - вижте този въпрос: Друга UnicodeEncodeError при използване на pandas метод to_sql с MySQL

person Ricky McMaster    schedule 16.11.2017