2017-01-20 14 views
1

へのセグメントデータIは、日時のデータフレーム(インデックス)と電力使用量のサンプリングがあります:実際にパンダ(パイソン) - 時間枠

DateTime   Usage 
01-Jan-17 12am 10 
01-Jan-17 3am  5 
01-Jan-17 6am  15 
01-Jan-17 9am  40 
01-Jan-17 12pm 60 
01-Jan-17 3pm  62 
01-Jan-17 6pm  45 
01-Jan-17 9pm  18 
02-Jan-17 12am 11 
02-Jan-17 3am  4 
02-Jan-17 6am  17 
02-Jan-17 9am  37 
02-Jan-17 12pm 64 
02-Jan-17 3pm  68 
02-Jan-17 6pm  41 
02-Jan-17 9pm  16 

を、このシリーズは、はるかに長いです。私は時系列の日々の季節性を見ることができるように、日々の時間帯を比較しようとしています。あなたはこれらの時系列を比較することができるようにデータを分割するパンダの方法はありますか?結果のDataFrameは次のようになります:

Time 1-Jan 2-Jan 
12am 10  11 
3am  5  4 
6am  15  17 
9am  40  37 
12pm 60  64 
3pm  62  68 
6pm  45  41 
9pm  18  16 

ありがとう!

答えて

1

あなたはDateTimestrなどのデータ型を持っている、あなたはDateTimeに分割し、それを旋回することができると仮定すると:

df[['Date', 'Time']] = df.DateTime.str.split(" ", expand=True) 
df1 = df.pivot("Time", "Date", "Usage").reset_index() 

enter image description here


Time列をソートする方法は?実際にはそれほど単純ではありません。時間、時間、PM/AMインジケータ、時間が12の場合、12を12時間にする必要があります。

# use regex to extract Hour (numeric part of Time) and AM/PM indicator 
hourInd = df1.Time.str.extract("(?P<Hour>\d+)(?P<Ind>[pa]m)", expand=True) 

# convert the hour column to integer and create another column to check if hour is 12 
# then sort by AM/PM indicator, IsTwelve and Hour and get the index to reorder the original 
# data frame 
df1.loc[(hourInd.assign(Hour = hourInd.Hour.astype(int), IsTwelve = hourInd.Hour != "12") 
     .sort_values(["Ind", "IsTwelve", "Hour"]).index)] 

enter image description here

関連する問題