74495


下記1、2の処理で辞書をDataframeに一行ずつ追加していく方法を教えてください。

  1. 下記ocのvalueを更新
  2. oc_dfに一行ずつvalueを追加  
1、2を繰り返してoc_dfを更新  
oc_dfに追加する行はリングバッファのように更新して最大10行としたいのですが中々うまくいきません。

[code]

    PTPSYNC = "hoge"
    SWD1 = "delay"
    SWD2 = "offset"
    TIME = "timedate"
    
    oc = {
          TIME: '',
          PTPSYNC+str(1): {SWD1: 0, SWD2: 0},
          PTPSYNC+str(2): {SWD1: 0, SWD2: 0}
          }
    
    oc_df = pd.json_normalize(oc)
    
[/code]

希望するdataframeは以下のイメージです

[code]

    timedate           hoge1.delay  hoge1.offset  hoge2.delay  hoge2.offset
    1970-1-1_12:00;00           30            32           23            22
    1970-1-1_12:00;01           31            32           24            21
    1970-1-1_12:00;02           11            22           24            22
    .
    .
    .
    .
    
[/code]


CC BY-SA 4.0
2020-08-14T13:54:09.897
69555
2021-03-07T08:08:23.180
41344
question
pandas json
Dataframeにネストした辞書を一つずつ追加していく方法


普通に追加するならこのようにできます。  
しかし処理速度は遅いはずなのでやめたほうがよいでしょう

[code]

    df = pd.DataFrame()
    for _ in range(3):
        # ここで oc_df 作成しておいて
        df = df.append(oc_df)
    display(df)
    
[/code]

解決されたようですが, 辞書を複数行用意し (DataFrame作るのなら)一挙に作るほうが速いはずです

[code]

    # どのように生成するのか不明なので, 順次に行う場合 ↓
    oc = {
          TIME: '',
          PTPSYNC+str(1): {SWD1: 0, SWD2: 0},
          PTPSYNC+str(2): {SWD1: 0, SWD2: 0}
          }
    oc1 = {
          TIME: '',
          PTPSYNC+str(1): {SWD1: 1, SWD2: 1},
          PTPSYNC+str(2): {SWD1: 1, SWD2: 1}
          }
    oc2 = {
          TIME: '',
          PTPSYNC+str(1): {SWD1: 2, SWD2: 2},
          PTPSYNC+str(2): {SWD1: 2, SWD2: 2}
          }
    lst = []
    lst.append(oc)
    lst.append(oc1)
    lst.append(oc2)
    oc_df = pd.json_normalize(lst)
    
[/code]


CC BY-SA 4.0
2021-03-07T08:08:23.180
74495
2021-03-07T08:08:23.180
43025
69555
answer