Seite 1 von 1

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

Verfasst: Mittwoch 14. Februar 2024, 13:44
von Peter Boonants
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

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

Verfasst: Mittwoch 14. Februar 2024, 19:09
von geraldfo
Ein Methodenaufruf ist eher nicht als Parameter einer Function vorgesehen, oder täusche ich mich?

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

Verfasst: Mittwoch 14. Februar 2024, 19:38
von Sirius3
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?

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

Verfasst: Freitag 15. März 2024, 18:43
von Peter Boonants
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