2017-03-03 27 views
0

データフレーム内の複数の時刻の列に日付を結合しようとしています。私は各行を繰り返し処理することができますが、列をどのように組み合わせるかについては混乱しています。例:datetimeを使用して日付と時刻の列を結合する

date  first_time second_time .... 
0 2008/09/11 12:32  17:56 
1 2016/12/02 06:43  14:02 
2 2001/01/01 02:45  20:13 
. 
. 
. 

.iterrows()を使用すると、各行に分割することができます。したがって、行['date']はその特定の列の日付になります。しかし、私はdatetimeを使用して日付を各列と結合する必要があります。私はオンラインで探しているさまざまな方法でエラーを取得し続けます。私は行['日付']と行['first_time']を持っている場合、どのようにデータフレームでそれらを組み合わせることができます(日付と他のすべての時間列とも)?

最終結果は、このようになります。

first_datetime  second_datetime .... 
0 2008/09/11 12:32  2008/09/11 17:56 
1 2016/12/02 06:43  2016/12/02 14:02 
2 2001/01/01 02:45  2001/01/01 20:13 
. 
. 
. 

答えて

1

あなたが可能な第1 set_index次いでカラムdatetime列のループのあるto_datetime変換:より動的なソリューションについて

df = df.set_index('date') 
for col in df.columns: 
    df[col] = pd.to_datetime(df.index + df[col], format='%Y/%m/%d%H:%M') 
#if necessary rename columns 
df.columns = df.columns.str.replace('time','datetime') 
df = df.reset_index(drop=True) 
print (df) 
     first_datetime  second_datetime 
0 2008-09-11 12:32:00 2008-09-11 17:56:00 
1 2016-12-02 06:43:00 2016-12-02 14:02:00 
2 2001-01-01 02:45:00 2001-01-01 20:13:00 

print (df.dtypes) 
first_datetime  datetime64[ns] 
second_datetime datetime64[ns] 
dtype: object 

と列のみを変換timeの名前:

df = df.set_index('date') 
#extract only time columns 
cols = df.columns[df.columns.str.contains('time')] 
for col in cols: 
    df[col] = pd.to_datetime(df.index + df[col], format='%Y/%m/%d%H:%M') 
df.columns = df.columns.str.replace('time','datetime') 
df = df.reset_index(drop=True) 
print (df) 
     first_datetime  second_datetime 
0 2008-09-11 12:32:00 2008-09-11 17:56:00 
1 2016-12-02 06:43:00 2016-12-02 14:02:00 
2 2001-01-01 02:45:00 2001-01-01 20:13:00 
関連する問題