和列

2017-03-02 5 views
1

ので、同様に、私は、日時によってインデックス付け数字の列を持つパンダのデータフレームを持っている:和列

        ABC XYZ 
2016-12-01 06:43:02.541287-06:00 2 11 
2016-12-01 06:43:06.341349-06:00 52 3 
2016-12-01 06:43:11.745070-06:00 16 0 
2016-12-01 06:43:18.245247-06:00 9 100 
2016-12-01 06:43:25.545450-06:00 0 75 
2016-12-01 06:43:35.953279-06:00 4 0 
2016-12-01 06:43:45.553310-06:00 13 8 
2016-12-01 06:43:55.053600-06:00 3 12 
2016-12-01 06:43:59.153890-06:00 6 9 

私は10秒ごとに「GROUPBY」したいとABCとXYZの合計を計算しますABCのために、私は54を取得するために、2 + 52を追加して、

最初の2行すなわち
        ABC XYZ 
2016-12-01 06:43:10.000000-06:00 54 14 
2016-12-01 06:43:20.000000-06:00 25 100 
2016-12-01 06:43:30.000000-06:00 0 75 
2016-12-01 06:43:40.000000-06:00 4 0 
2016-12-01 06:43:50.000000-06:00 13 8 
2016-12-01 06:44:00.000000-06:00 9 21 

は、同じ10秒の期間内にあり、XYZのために私が追加します、とこのようになり、それらを合計した新しいデータフレームを生成します11 + 3を14にします。次に、これらの合計を新しいDataFrameに配置します。私のコードは非常に恐ろしく、私はそれを含めたくない。どんな提案も大歓迎です。 sum

+1

は 'DFを行います.resample( '10s')。sum() 'は動作しますか? – EdChum

+0

聖なるくそ。それは簡単だった。 1時間前に投稿して、ナンセンスコーディングをしておく必要がありました。どうもありがとうございました。 – TPM

答えて

1

使用resample

df = df.resample('10S').sum() 
print (df) 
        ABC XYZ 
2016-12-01 12:43:00 54 14 
2016-12-01 12:43:10 25 100 
2016-12-01 12:43:20 0 75 
2016-12-01 12:43:30 4 0 
2016-12-01 12:43:40 13 8 
2016-12-01 12:43:50 9 21 

しかし、タイムゾーンを持つ必要性の仕事、最初tz_localizeUTCをデフォルトして、tz_convert-6タイムゾーン(US/Indiana-Starkeなど)に変換する場合:

df = df.tz_localize('UTC').resample('10S').sum().tz_convert('US/Indiana-Starke') 
print (df) 
          ABC XYZ 
2016-12-01 06:43:00-06:00 54 14 
2016-12-01 06:43:10-06:00 25 100 
2016-12-01 06:43:20-06:00 0 75 
2016-12-01 06:43:30-06:00 4 0 
2016-12-01 06:43:40-06:00 13 8 
2016-12-01 06:43:50-06:00 9 21 
+0

'Pandas'はデータ操作をとても楽しくします。 +1。 –

+0

@JakeWagner - そうですね。だから私は 'pandas'が好きです;) – jezrael