パンダ-辞書リストの列拡張-最適化する方法は?

マットM

次の列にtest3列id, name, valueデータフレームがありますtest['values']test外観のサンプルは次のとおりです。

    name                  values
0   impressions           [{'value': 17686, 'end_time': '2018-06-12T07:0...
1   reach                 [{'value': 6294, 'end_time': '2018-06-12T07:00...
2   follower_count        [{'value': 130, 'end_time': '2018-06-12T07:00:...
3   email_contacts        [{'value': 1, 'end_time': '2018-06-12T07:00:00...
4   phone_call_clicks     [{'value': 0, 'end_time': '2018-06-12T07:00:00...
5   text_message_clicks   [{'value': 0, 'end_time': '2018-06-12T07:00:00...
6   get_directions_clicks [{'value': 0, 'end_time': '2018-06

テスト値セルは次のようになります。

[{'end_time': '2018-06-12T07:00:00+0000', 'value': 17686},
 {'end_time': '2018-06-13T07:00:00+0000', 'value': 4064}]

次のようにして拡張できます。

test[['Values 1', 'Values 2']] = test['values'].apply(pd.Series)
test[['Date 1', 'Values 1']] = test['Values 1'].apply(pd.Series)
test[['Date 2', 'Values 2']] = test['Values 2'].apply(pd.Series)
test.drop(['values'], axis=1, inplace=True)

結果は次のようになります。

id                          name        Values 1    Values 2    Date 1  Date 2
/insights/impressions/day   impressions 17686   4064    2018-06-12T07:00:00+0000    2018-06-13T07:00:00+0000
/insights/reach/day reach   6294    2085    2018-06-12T07:00:00+0000    2018-06-13T07:00:00+0000
/insights/follower_count/day    follower_count  130 37  2018-06-12T07:00:00+0000    2018-06-13T07:00:00+0000

私は疑問に思っていました:

a。辞書のリストを拡張するより速い方法があります

b。値1と値2が1つの列に表示されるように、データのピボットを解除する方法があります。そして、日付1と日付2は別の列にあります

ジェズリール

入力データがjsonsの場合は、を使用することをお勧めしますjson_normalize

j = [{'description': 'Total number 1', 'id': 'a', 'name': 'impressions', 'period': 'day', 'title': 'Impressions', 'values': [{'end_time': '2018-06-12T07:00:00+0000', 'value': 17686}, {'end_time': '2018-06-13T07:00:00+0000', 'value': 4064}]},
      {'description': 'fn', 'id': 'b', 'name': 'impressions', 'period': 'day', 'title': 'Impressions', 'values': [{'end_time': '2018-06-12T07:00:00+0000', 'value': 17686}, {'end_time': '2018-06-13T07:00:00+0000', 'value': 4064}]}]

from pandas.io.json import json_normalize

df = json_normalize(j, 'values')
print (df)
                   end_time  value
0  2018-06-12T07:00:00+0000  17686
1  2018-06-13T07:00:00+0000   4064
2  2018-06-12T07:00:00+0000  17686
3  2018-06-13T07:00:00+0000   4064

ただし、必要に応じて元の列も追加します。

from pandas.io.json import json_normalize


df = json_normalize(j, 'values', ['description', 'id', 'name', 'period', 'title'])
print (df)
                   end_time  value     description id         name period  \
0  2018-06-12T07:00:00+0000  17686  Total number 1  a  impressions    day   
1  2018-06-13T07:00:00+0000   4064  Total number 1  a  impressions    day   
2  2018-06-12T07:00:00+0000  17686              fn  b  impressions    day   
3  2018-06-13T07:00:00+0000   4064              fn  b  impressions    day   

         title  
0  Impressions  
1  Impressions  
2  Impressions  
3  Impressions  

最初の解決策:

test = pd.DataFrame({
    'name':['a', 'b', 'n'],
    'values':[[{'end_time': '2018-06-12T07:00:00+0000', 'value': 17686},
 {'end_time': '2018-06-13T07:00:00+0000', 'value': 4064}],[{'end_time': '2018-06-12T07:00:00+0000', 'value': 17686},
 {'end_time': '2018-06-13T07:00:00+0000', 'value': 4064}],[{'end_time': '2018-06-12T07:00:00+0000', 'value': 17686},
 {'end_time': '2018-06-13T07:00:00+0000', 'value': 4064}]]
})


df =  (pd.concat([pd.DataFrame(x) for x in test['values']], axis=1, keys=(1, 2))
        .stack(0)
        .reset_index(level=1, drop=True))
print (df)
                   end_time  value
0  2018-06-12T07:00:00+0000  17686
0  2018-06-12T07:00:00+0000  17686
1  2018-06-13T07:00:00+0000   4064
1  2018-06-13T07:00:00+0000   4064

df = test.join(df)
print (df)
  name                                             values  \
0    a  [{'end_time': '2018-06-12T07:00:00+0000', 'val...   
0    a  [{'end_time': '2018-06-12T07:00:00+0000', 'val...   
1    b  [{'end_time': '2018-06-12T07:00:00+0000', 'val...   
1    b  [{'end_time': '2018-06-12T07:00:00+0000', 'val...   
2    n  [{'end_time': '2018-06-12T07:00:00+0000', 'val...   

                   end_time    value  
0  2018-06-12T07:00:00+0000  17686.0  
0  2018-06-12T07:00:00+0000  17686.0  
1  2018-06-13T07:00:00+0000   4064.0  
1  2018-06-13T07:00:00+0000   4064.0  
2                       NaN      NaN  

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リストの辞書からパンダ列を作成する

分類Dev

列を区切る辞書のパンダリスト

分類Dev

パンダ-辞書のリストである列を平坦化します

分類Dev

Reactでレンダリングパフォーマンスを最適化する方法は?

分類Dev

ネストされた辞書から拡張パンダデータフレームを作成する方法は?

分類Dev

辞書のリストを別々の列に変換するパンダ

分類Dev

辞書のリストをパンダの別々の列に解凍します

分類Dev

Angularでのレンダリングを最適化する方法は?

分類Dev

複数のjQueryイベントを最適化する方法は?

分類Dev

Pythonパンダはリストのリストの列を2つの新しい列に拡張します

分類Dev

辞書のファイルパスを拡張する方法

分類Dev

ソリューションを最適化する方法は?

分類Dev

QGraphicsViewのパフォーマンスを最適化する方法は?

分類Dev

VBAコードのパフォーマンスを最適化する方法は?

分類Dev

辞書のリストの辞書をパンダDataFrameに変換します

分類Dev

Twitterテキストのクリーニングを最適化する方法は?

分類Dev

辞書のリストを含むパンダの列を複数の列に展開する方法

分類Dev

SQLite、Linq、Foreach: パフォーマンスを最適化する方法は?

分類Dev

コンパイラとJVMの最適化を無効にする方法は?

分類Dev

GraalVM:コンパイラの最適化を実装する方法は?

分類Dev

パンダの辞書にリストしますか?

分類Dev

リスト/配列の辞書からクラスを繰り返しインスタンス化するための最良の方法は何ですか?

分類Dev

関数で設定パンダ列を最適化する

分類Dev

パンダは辞書のリストでグループ化します

分類Dev

パンダの値の補間を最適化する

分類Dev

パンダの計算を最適化する

分類Dev

matplotlib関数の最適化をアニメーション化する方法は?

分類Dev

カスタム平均の実装は、パンダのデフォルトの平均よりも遅くなります。最適化する方法は?

分類Dev

ネストされた辞書のリストを使用してパンダデータフレームの列をフラット化する方法

Related 関連記事

  1. 1

    リストの辞書からパンダ列を作成する

  2. 2

    列を区切る辞書のパンダリスト

  3. 3

    パンダ-辞書のリストである列を平坦化します

  4. 4

    Reactでレンダリングパフォーマンスを最適化する方法は?

  5. 5

    ネストされた辞書から拡張パンダデータフレームを作成する方法は?

  6. 6

    辞書のリストを別々の列に変換するパンダ

  7. 7

    辞書のリストをパンダの別々の列に解凍します

  8. 8

    Angularでのレンダリングを最適化する方法は?

  9. 9

    複数のjQueryイベントを最適化する方法は?

  10. 10

    Pythonパンダはリストのリストの列を2つの新しい列に拡張します

  11. 11

    辞書のファイルパスを拡張する方法

  12. 12

    ソリューションを最適化する方法は?

  13. 13

    QGraphicsViewのパフォーマンスを最適化する方法は?

  14. 14

    VBAコードのパフォーマンスを最適化する方法は?

  15. 15

    辞書のリストの辞書をパンダDataFrameに変換します

  16. 16

    Twitterテキストのクリーニングを最適化する方法は?

  17. 17

    辞書のリストを含むパンダの列を複数の列に展開する方法

  18. 18

    SQLite、Linq、Foreach: パフォーマンスを最適化する方法は?

  19. 19

    コンパイラとJVMの最適化を無効にする方法は?

  20. 20

    GraalVM:コンパイラの最適化を実装する方法は?

  21. 21

    パンダの辞書にリストしますか?

  22. 22

    リスト/配列の辞書からクラスを繰り返しインスタンス化するための最良の方法は何ですか?

  23. 23

    関数で設定パンダ列を最適化する

  24. 24

    パンダは辞書のリストでグループ化します

  25. 25

    パンダの値の補間を最適化する

  26. 26

    パンダの計算を最適化する

  27. 27

    matplotlib関数の最適化をアニメーション化する方法は?

  28. 28

    カスタム平均の実装は、パンダのデフォルトの平均よりも遅くなります。最適化する方法は?

  29. 29

    ネストされた辞書のリストを使用してパンダデータフレームの列をフラット化する方法

ホットタグ

アーカイブ