Seite 1 von 1

pandas.to_datetime: Daten aus 2 Spalten kombinieren

Verfasst: Samstag 20. Februar 2021, 15:12
von 10211291
Ich möchte die mit pandas datetime die Daten zweier Spalten kombinieren.

Die Datei "minimal_in.csv" ist die folgende:

Code: Alles auswählen

Year,Time
29.01.2001,13:31:24
29.01.2001,13:31:27
29.01.2001,13:31:29
29.01.2001,13:31:32
29.01.2001,13:31:34
Und ich habe es probiert mit:

Code: Alles auswählen

import pandas as pd
from datetime import datetime, timedelta

import pandas as pd

df = pd.read_csv('minimal_in.csv')
df.head(5)

df[['Year','Time']].apply(pd.to_datetime)
df.dtypes
oder alternativ mit:

Code: Alles auswählen

df_combine = df['Year','Time']
pd.to_datetime(df_combine)
Hat jemand eine Idee? Ich wäre euch mega dankbar !

Re: pandas.to_datetime: Daten aus 2 Spalten kombinieren

Verfasst: Samstag 20. Februar 2021, 18:52
von Dennis89
Hallo,

ist dein Ziel einen String zu erhalten der das Jahr (das eigentlich mehr als nur das Jahr ist) und die Zeit enthält?

Für die erste Kombination zum Beispiel so:

Code: Alles auswählen

import pandas as pd

df = pd.read_csv('minimal_in.csv', header=1)
df_combine = f"{df.columns[0]} {df.columns[1]}"
print(df_combine)
Grüße
Dennis

Re: pandas.to_datetime: Daten aus 2 Spalten kombinieren

Verfasst: Samstag 20. Februar 2021, 21:11
von 10211291
Hey Dennis,

Danke dir!
Idealerweise hätte ich am Ende eine Spalte / Series vom Typ datetime64[ns], wo für jede Zeile einzeln die Werte aus "Year" und "Time" kombiniert werden.
Soweit ich das sehe, werden durch diese Funktion nur die Werte der ersten Zeile kombiniert und die Ausgabe ist 29.01.2001 13:31:24.

Viele Grüße,
Julia

Re: pandas.to_datetime: Daten aus 2 Spalten kombinieren

Verfasst: Samstag 20. Februar 2021, 22:29
von Dennis89
Hallo Julia,

ich stehe gerade etwas auf dem Schlauch. Du kannst über die Datei iterieren und damit jede Zeile für sich betrachten.

Code: Alles auswählen

import pandas as pd

df = pd.read_csv('minimal_in.csv')
for date in df['Year']:
    print(date)
Analog dazu kannst du mit der Zeit-Spalte umgehen. Das Zusammenführen bereitet mir gerade Probleme, eventuell hat hier noch einer Tipps, jetzt will ich es auch wissen. Vielleicht habe ich mich auch verrennt, das kommt ab und zu mal vor.

Hoffe ich konnte trotzdem etwas helfen.

Viel Erfolg noch.

Grüße
Dennis

Re: pandas.to_datetime: Daten aus 2 Spalten kombinieren

Verfasst: Sonntag 21. Februar 2021, 00:26
von __blackjack__
@Dennis89: Pandas benutzt man gerade um nicht mit Schleifen arbeiten zu müssen.

@10211291: Das löst man bereits beim einlesen. Schau Dir mal an was `read_csv()` so an Argumenten bezüglich parsen von Datums- und Zeitangaben hat. Da kann man auch gleich Spalten zusammenfassen.

Re: pandas.to_datetime: Daten aus 2 Spalten kombinieren

Verfasst: Sonntag 21. Februar 2021, 11:12
von 10211291
@ __blackjack__

Danke für den Tipp mit der Option parse_dates!

Das funktioniert jetzt super. Hier die Lösung:

minimal.csv:

Code: Alles auswählen

Year,Time
29.01.2001,13:31:24
29.01.2001,13:31:27
29.01.2001,13:31:29
29.01.2001,13:31:32
29.01.2001,13:31:34

Code: Alles auswählen

import pandas as pd
from datetime import datetime, timedelta

import pandas as pd

df = pd.read_csv('minimal_in.csv',parse_dates=[[0, 1]])
df.head(5)
Ausgabe df:

Code: Alles auswählen

Year_Time
0 	2001-01-29 13:31:24
1 	2001-01-29 13:31:27
2 	2001-01-29 13:31:29
3 	2001-01-29 13:31:32
4 	2001-01-29 13:31:34