-1

以下のようなハッシュのリストがあります。

import pandas as pd
import datetime

rows = [{
          "version" : "v1",
          "timestamp" : "2013-06-04T06:00:00.000Z",
          "event" : {
            "campaign_id" : "cid2504649263",
            "country" : "AU",
            "region" : "Cairns",
            "impressions" : 3000
          }
        },
        {
          "version" : "v1",
          "timestamp" : "2013-06-04T06:00:00.000Z",
          "event" : {
            "campaign_id" : "cid2504649263",
            "country" : "AU",
            "region" : "Cairns",
            "impressions" : 3000
          }
        },

        {
          "version" : "v1",
          "timestamp" : "2013-06-04T07:00:00.000Z",
          "event" : {
            "campaign_id" : "cid2504649263",
            "country" : "AU",
            "region" : "Cairns",
            "impressions" : 3000
          }
        }
            ]

hash_data = []
for row in rows:
    ts = row['timestamp']
    meta = row['event']
    ts = datetime.datetime.strptime(ts,'%Y-%m-%dT%H:%M:%S.000Z')
    meta['utcdt']=ts
    hash_data.append(meta)

data = pd.DataFrame(hash_data)
print data.values
grouped = data.groupby(['utcdt','campaign_id','region','country']).sum()
print grouped.values

[['cid2504649263' 'AU' 3000 'Cairns' datetime.datetime(2013, 6, 4, 6, 0)]
 ['cid2504649263' 'AU' 3000 'Cairns' datetime.datetime(2013, 6, 4, 6, 0)]
 ['cid2504649263' 'AU' 3000 'Cairns' datetime.datetime(2013, 6, 4, 7, 0)]]

私の問題はこれです。時間ごとにデータをロールアップする必要があります。データは次のようになります。パンダでそれを行うにはどうすればよいですか?

[
 ['cid2504649263' 'AU' 6000 'Cairns' datetime.datetime(2013, 6, 4, 6, 0)]
 ['cid2504649263' 'AU' 3000 'Cairns' datetime.datetime(2013, 6, 4, 7, 0)]]

以下を使用する場合:

grouped = data.groupby(['utcdt','campaign_id','region','country']).sum()
print grouped.values

[[ 6000.]
 [ 3000.]]
4

2 に答える 2

0

あなたが探しているdrop_duplicates

In [11]: data.drop_duplicates()
Out[11]:
     campaign_id country  impressions  region               utcdt
0  cid2504649263      AU         3000  Cairns 2013-06-04 06:00:00
2  cid2504649263      AU         3000  Cairns 2013-06-04 07:00:00

余談ですが、0.11.1 にはread_json、json (ファイル、URL、または文字列) から直接 DataFrame を作成する実験的な関数が付属しています...

于 2013-06-11T02:08:20.980 に答える
0

最初にPandas DataFrame, data = DataFrame(rows), 関数を使用して、データを効率的に整理します。data.groupby(['timestamp'])次に、時間ごとに「データをロールアップ」するために使用できます。

これは、パンダの使用方法に関するインタラクティブなチュートリアルです。詳細なチュートリアル リストは、ここにあります。すべての基本事項を簡単に説明し、目的の分析を実行できるようにします。

于 2013-06-11T02:09:47.580 に答える