Numerize und apply im Dataframe

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
Hoeoe
User
Beiträge: 1
Registriert: Dienstag 9. Mai 2023, 17:23

Hallo ich stehe vor folgendem Problem:

Code: Alles auswählen

# import the module
import pandas as pd
 
# creating a DataFrame
df = pd.DataFrame({'String 1' :['Tom', 'Nick', 'Krish', 'Jack'],
                   'String 2' :['Jane', 'John', 'Doe', 'Mohan']})
 
# function for prepending 'Geek'
def prepend_geek(name):
    return 'Geek ' + name
 
# executing the function
df[["String 1", "String 2"]] = df[["String 1",
                                   "String 2"]].apply(prepend_geek)
 
# displaying the DataFrame
print(df)
Geht.

Wieso geht das hier nicht? Bzw. wie müsste es richtig lauten? (Vorletzte Zeile)

Code: Alles auswählen

from numerize import numerize
import pandas as pd 
 

d=[[623232323276, 98234242265], [5656565323, 438878787232]]
z=[6232323232.76, 98234242265]

df = pd.DataFrame({"a":[623232323276, 98234242265],
                   "b": [5656565323, 438878787232]})
df3=df.copy()

def makereadable(x):
    return numerize.numerize(x)

df["a"] = df["a"].apply(makereadable)
df["b"] = df["b"].apply(makereadable)

print(df)


df3[["a","b"]] = df3[["a","b"]].apply(makereadable)
print(df3)
Vielen Dank für die Hilfe
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Im ersten Fall erzeugst Du neue Spalten und überschreibst damit die alten.
Im zweiten Fall nimmst Du zwei bestehende Spalten und versuchst den Inhalt zu ersetzen. Da aber der neue Inhalt (String) in den bestehenden Spaltentyp int umgewandelt werden muß, geht das schief.
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das erste Beispiel hätte man übrigens einfacher haben können:

Code: Alles auswählen

In [58]: df
Out[58]: 
  String 1 String 2
0      Tom     Jane
1     Nick     John
2    Krish      Doe
3     Jack    Mohan

In [59]: "Geek " + df
Out[59]: 
     String 1    String 2
0    Geek Tom   Geek Jane
1   Geek Nick   Geek John
2  Geek Krish    Geek Doe
3   Geek Jack  Geek Mohan
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten