

pythonのpandasを使ったデータ加工方法で悩んでおります。  
どなたかご教授お願いいたします。  
以下のようなデータを加工したいです。

このデータを

[code]

    import pandas as pd
    pd.DataFrame([[1,'ame', 30,'hare',40],[2,'kumori', 20,'kosame',30]], columns=['id','today_tenki', 'today_ondo', 'tommow_tenki', 'tommorow_ondo'])
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/xNayh.png)](https://i.stack.imgur.com/xNayh.png)

このようなデータに変換したいです。

[![画像の説明をここに入力](https://i.stack.imgur.com/180Bf.png)](https://i.stack.imgur.com/180Bf.png)  
pandasのmeltやstackを使ってこのような処理ができると思ったのですが、うまくいかず。


CC BY-SA 4.0
2020-08-20T09:05:57.607
69720
2020-08-20T11:40:13.560
29536
question
python pandas
pandasの表の処理方法に悩んでいます


2つのデータフレームに分割して、カラム名を変更、結合とソートで処理しました。  
もっとスマートが方法があるかもしれません。

[code]

    import pandas as pd
    df = pd.DataFrame([[1,'ame', 30,'hare',40],[2,'kumori', 20,'kosame',30]], columns=['id','today_tenki', 'today_ondo', 'tommow_tenki', 'tommorow_ondo'])
    df1 = df[['id', 'today_tenki','today_ondo']]
    df2 = df[['id', 'tommow_tenki','tommorow_ondo']]
    df2.columns = df1.columns
    new_df = pd.concat([df1,df2], ignore_index=True).sort_values(by='id')
    new_df.columns = ['id', 'tenki', 'ondo']
    
[/code]


CC BY-SA 4.0
2020-08-20T10:39:34.127
69724
2020-08-20T10:49:10.943
2020-08-20T10:49:10.943
35328
35328
69720
answer


以下は
[numpy.concatenate](https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html)
を使う場合です。

[code]

    >>> import pandas as pd
    >>> import numpy as np
    
    >>> df = pd.DataFrame([
        [1,'ame', 30,'hare',40],
        [2,'kumori', 20,'kosame',30]
      ], columns=['id', 'today_tenki', 'today_ondo', 'tommorow_tenki', 'tommorow_ondo'])
    
    >>> df
       id today_tenki  today_ondo tommorow_tenki  tommorow_ondo
    0   1         ame          30         hare             40
    1   2      kumori          20       kosame             30
    
    >>> dfn = pd.DataFrame(
      np.concatenate((
        df[['id', 'today_tenki', 'today_ondo']].values,
        df[['id', 'tommorow_tenki', 'tommorow_ondo']].values
      )), columns=('id', 'tenki', 'ondo')
    ).sort_values('id', ignore_index=True)
    
    >>> dfn
      id   tenki ondo
    0  1     ame   30
    1  1    hare   40
    2  2  kumori   20
    3  2  kosame   30
    
[/code]


CC BY-SA 4.0
2020-08-20T11:40:13.560
69725
2020-08-20T11:40:13.560
69720
answer