Wie erreiche ich es, dass in einer Series die Einträge als String angezeigt werden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Meines Series ist:
China 1,367,645,161.2903225
United States 317,615,384.6153846
Japan 127,409,395.9731544
United Kingdom 63,870,967.7419355
Russian Federation 143,500,000.0000000
Canada 35,239,864.8648649
Germany 80,369,696.9696970
India 1,276,730,769.2307692
France 63,837,349.3975904
South Korea 49,805,429.8642534
Italy 59,908,256.8807339
Spain 46,443,396.2264151
Iran 77,075,630.2521008
Australia 23,316,017.3160173
Brazil 205,915,254.2372881

Ich möchte gerne dass sowohl die Zahlen als auch die Ländernamen als String angeführt werden!
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Brando,

man kann so leider nicht verstehen, was du meinst.

Bitte immer den relevanten Code posten. Verwendest du Pandas, Numpy, eine csv-Datei, ... ? Woher soll man das wissen?
Bei Pandas und Numpy kann man den Datentyp festlegen.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Hier also die Funktion

Code: Alles auswählen

import locale
def answer_thirteen():
    used = answer_one()
    population = 0.0
    # used["population"] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    used["population"] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
    PopEst = []
    # cdpc = 0.0
    # locale.setlocale(locale.LC_ALL, 'English')
    locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) 


    for index, row in used.iterrows():
        es = row["Energy Supply"]
        espc = row["Energy Supply per Capita"]
        population = es / espc
        used.ix[index, "population"] = population
        popul = str(locale.format('%.7f', population, True))
        # cd = row["Citable documents"]
        # popul = str(population)
        PopEst.extend([popul])
        # cdpc = cd / population
        # used.ix[index, "cdpc"] = cdpc
        # cdpc = 0.0 
        population = 0.0
    # print (PopEst)
    PopEst = pd.Series(PopEst)
    # PopEst.to_string()
    PopEst.index = ["China", 'United States', 'Japan', 'United Kingdom', 'Russian Federation', 'Canada', 'Germany', 'India', 'France', 'South Korea', 'Italy', 'Spain', 'Iran', 'Australia', 'Brazil']
    # PopEst = PopEst[1]
    # PopEst = PopEst.to_string()

    print (PopEst)
    return PopEst
Wie aus dem Code hervorgeht, bilde ich die Werte als Strings. Aber in der Series werden sie nicht als solche angezeigt!
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Variablennamen werden immer klein geschrieben und enthalten keine kryptischen Abkürzungen. Wie unterscheiden sich popul, PopEst oder population?
`answer_one` oder `answer_thirteen` sind keine aussagekräftigen Funktionsnamen.
`locale`-Einstellung gehören nicht mitten in irgendwelche Funktionen und formatierte Strings gehören nicht in Listen oder Pandas-Objekte. Formatiert wird erst bei der Ausgabe.
Einen Index mit hart codierten Ländernamen zu überschreiben, ist ein Fehler, weil wenn die Reihenfolge nicht der Erwartung entspricht, hat man falsche Daten. Wie schon in Deinen anderen Beiträgen angemerkt, ist es auch falsch, iterrow zu benutzen, arbeite wirklich zuerst das Pandas-Tutorial durch. Wenn Du das hier in Deinem Kurs nicht lernst, dann taugt Dein Kurs nichts.
Bei einer Klausur würdest Du von mir ein "ungenügend" bekommen, weil das eigentliche Ziel, zu lernen, wie man mit Pandas Daten verarbeitet, verfehlt wurde.

Deine Funktion sieht eigentlich so aus:

Code: Alles auswählen

def answer_thirteen():
    country_data = answer_one()
    country_data["poplulation"] = country_data["Energy Supply"] / country_data["Energy Supply per Capita"]
    # country_data["cdpc"] = country_data["Citable documents"] / country_data["poplulation"]
    return country_data
Du hast zwar verraten, wie der Input aussieht, aber wie soll der Output aussehen? Pandas hat vielfältige Methoden für die Ausgabe.
Antworten