Pandas df.to_csv(“Datei.csv" encode="utf-8") gibt noch trash Zeichen zum minus-Zeichen

Habe ich etwas gelesen über ein Python-2 Einschränkung mit Bezug auf Pandas' to_csv( ... etc ...). Habe ich es getroffen? Ich bin auf Python 2.7.3

Erweist sich das Papierkorb-Zeichen ≥ und - wenn-Sie erscheinen in strings. Abgesehen davon, dass der export ist perfekt.

df.to_csv("file.csv", encoding="utf-8") 

Gibt es Abhilfe?

df.head() ist diese:

demography  Adults 49 yrs  Adults 1849 yrs at high risk||  \
state                                                           
Alabama                 32.7                             38.6   
Alaska                  31.2                             33.2   
Arizona                 22.9                             38.8   
Arkansas                31.2                             34.0   
California              29.8                             38.8  

csv-Ausgabe ist diese

state,  Adults ≥49 yrs,   Adults 18−49 yrs at high risk||
0,  Alabama,    32.7,   38.6
1,  Alaska, 31.2,   33.2
2,  Arizona,    22.9,   38.8
3,  Arkansas,31.2,  34
4,  California,29.8, 38.8

der ganze code ist:

import pandas
import xlrd
import csv
import json

df = pandas.DataFrame()
dy = pandas.DataFrame()
# first merge all this xls together


workbook = xlrd.open_workbook('csv_merger/vaccoverage.xls')
worksheets = workbook.sheet_names()


for i in range(3,len(worksheets)):
    dy = pandas.io.excel.read_excel(workbook, i, engine='xlrd', index=None)
    i = i+1
    df = df.append(dy)

df.index.name = "index"

df.columns = ['demography', 'area','state', 'month', 'rate', 'moe']

#Then just grab month = 'May'

may_mask = df['month'] == "May"
may_df = (df[may_mask])

#then delete some columns we dont need

may_df = may_df.drop('area', 1)
may_df = may_df.drop('month', 1)
may_df = may_df.drop('moe', 1)


print may_df.dtypes #uh oh, it sees 'rate' as type 'object', not 'float'.  Better change that.

may_df = may_df.convert_objects('rate', convert_numeric=True)

print may_df.dtypes #that's better

res = may_df.pivot_table('rate', 'state', 'demography')
print res.head()


#and this is going to spit out an array of Objects, each Object a state containing its demographics
res.reset_index().to_json("thejson.json", orient='records')
#and a .csv for good measure
res.reset_index().to_csv("thecsv.csv", orient='records', encoding="utf-8")
  • Geben Sie uns ein Beispiel für deine Daten, da kann ich nicht reproduzieren "trash" - Zeichen.
  • Nicht einmal auf Ihre Daten. Ein einfaches, vollständiges Beispiel, das das problem reproduziert wird, was wir wollen: df = pd.DataFrame({"A": ['a', '≥']}); df.to_csv('test.csv'), funktioniert gut für mich. Posten Sie Ihre python-version als auch.
  • Huh, ich versuche @TomAugspurger 's einfach testen, aber ich bekomme "SyntaxError: Non-ASCII character '\xe2' in der Datei test.py in Zeile 5, aber no encoding declared; see python.org/peps/pep-0263.html für weitere details" Unnötig zu sagen, ich verstehe nicht die Seite, die Sie zeigen Sie mir. Ich meine, ich verstehe, muss ich mein edit python installieren ... aber ich bin auf einer Frist anderswo jetzt, wissen Sie?
  • Entweder Ihr python oder Ihre terminal-encoding eingestellt ist zu erwarten, dass nur ascii-Zeichen. Lesen Sie here nach einem Weg, um Ihre Codierung, die arbeiten können als temporäre Lösung.
  • Ja, ich denke, das wird zu tun haben. Ich bin erschrocken update auf Python 3 in der Mitte eines Projekts sowieso.
InformationsquelleAutor Maggie | 2014-09-11
Schreibe einen Kommentar