Wieso druckt print(s, df.info(), sep = "\n") nicht zuerst s aus?

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
Peter Boonants
User
Beiträge: 2
Registriert: Mittwoch 7. Februar 2024, 17:45

Hallo liebe Pythonfreundinnen und -freunde,

zu meiner großen Überraschung führt

Code: Alles auswählen

from pandas import DataFrame
df = DataFrame({"a": ["f", "g", "h"], "b": [7, 6, 5], "c": [3.5, 2.8, .25]})
s = "Dieser Satz sollte obenan stehen!"
print(s, df.info(), sep = "\n")
zu folgendem Ergebnis:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 a 3 non-null object
1 b 3 non-null int64
2 c 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes
Dieser Satz sollte obenan stehen!
None
und nicht zu:
Dieser Satz sollte obenan stehen!
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 a 3 non-null object
1 b 3 non-null int64
2 c 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes
None
Ich dachte, dass

Code: Alles auswählen

print(s, df.info(), sep = "\n")
das gleiche Ergebnis wie

Code: Alles auswählen

print(s)
print(df.info())
liefern würde.

Wie kann ich sicherstellen, dass ich mit nur einem Printbefehl das gewünschte Ergebnis erhalte?

Vielen Dank im Voraus.

Herzliche Grüße aus Belgien

Peter
geraldfo
User
Beiträge: 44
Registriert: Samstag 28. Januar 2023, 20:19
Wohnort: Nähe Wien

Ein Methodenaufruf ist eher nicht als Parameter einer Function vorgesehen, oder täusche ich mich?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

df.info hat keinen Rückgabewert, sondern gibt direkt den Inhalt aus. Deshalb steht da ganz unten auch None, das Du so sicher nicht haben willst.
Richtig wäre also

Code: Alles auswählen

print("Dieser Satz sollte obenan stehen!")
df.info()
Was stört Dich daran eigentlich?
Peter Boonants
User
Beiträge: 2
Registriert: Mittwoch 7. Februar 2024, 17:45

Vielen Dank für die klaren und interessanten Antworten!

Dank Ihnen verstehe ich jetzt, was los war und habe ich einen allgemeineren Einblick gewonnen!

Ich dachte, dass df.info() tatsächlich einen Rückgabewert hätte und dieser
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 a 3 non-null object
1 b 3 non-null int64
2 c 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes
(betrachtet als Zeichenkette) wäre.

Mich stört gar nichts an

Code: Alles auswählen

print("Dieser Satz sollte obenan stehen!")
df.info()
und deshalb möchte ich das verwenden.

(Ich bin nur ein Anfänger, was die Pythonprogrammierung angeht.)

Entschuldigung für die späte Rückmeldung.

Herzliche Grüße

Peter
Antworten