Pandas を使用して日付と時刻の列を結合する
時系列データを扱う場合、多くの場合、日付と時刻の列を結合して単一のデータを取得する必要があります。タイムスタンプ値。 Pandas は、pd.to_datetime() 関数など、これを実現するためのさまざまなオプションを提供します。
文字列の連結と pd.to_datetime() の使用
一部のシナリオでは、日付時間列は文字列として保存されます。それらを結合するには、次のように単純にスペースで連結します:
df['Date'] + ' ' + df['Time']
文字列が連結されたら、pd.to_datetime() を使用してそれらを DatetimeIndex オブジェクトに変換できます:
pd.to_datetime(df['Date'] + ' ' + df['Time'])
このアプローチでは、連結文字列の推論形式を利用できます。これは通常、個々の列の日付と時刻の形式の組み合わせです。
format= Parameter の使用
ただし、日付と時刻の文字列が標準化された形式ではない場合、または形式を明示的に指定したい場合は、次のように format= パラメータを使用できます。
pd.to_datetime(df['Date'] + df['Time'], format='%m-%d-%Y%H:%M:%S')
ここでは、連結された文字列の正確な形式を指定して、正確な変換を保証します。
日付を直接解析する
文字列を連結する代わりに、解析することもできます。 pd.read_csv() と parse_dates パラメータを使用して、日時情報を直接取得します。このパラメータを使用すると、日時オブジェクトとして解析する列のリストを指定できます。
たとえば、データが「data.csv」という名前の CSV ファイルに保存されている場合:
import pandas as pd df = pd.read_csv("data.csv", parse_dates=[['Date', 'Time']])
この場合、Pandas は指定された列を DatetimeIndex に自動的に解析します。
パフォーマンスに関する考慮事項
大規模なデータセットを扱う場合、パフォーマンスが重要になります。文字列を連結して日付時刻に変換すると、日付と時刻の情報を直接解析するよりも大幅に時間がかかります。 %timeit マジック コマンドを使用した次のタイミング結果が示すように:
# Sample dataframe with 10 million rows df = pd.concat([df for _ in range(1000000)]).reset_index(drop=True) # Time to combine strings and convert to datetime %timeit pd.to_datetime(df['Date'] + ' ' + df['Time']) # Time to parse dates directly %timeit pd.to_datetime(df['Date'] + df['Time'], format='%m-%d-%Y%H:%M:%S')
この結果は、特に大規模なデータセットの場合、直接解析の方が大幅に高速であることを示しています。
以上がPandas で日付と時刻の列を結合するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。