pandasデータフレームの行を列に変換します

キム・ケン

以下Df1変換したいのDf2ですが。

空の値はNanで埋められます。

以下のDfsは例です。

  • 私のデータは1から8週間です。
  • IDは100,000です。

  • 8週目だけがすべてのIDを持っているので、合計行は100,000になります。

IDが100,000のDf3があり、df2としてフォーマットされたDf3にdf1をマージしたいと思います。

例)pd.merge(df3, df1, on="id", how="left")->しかし、次のようにフォーマットされますdf2

 Df1>
 wk, id, col1, col2  ...
 1    1   0.5  15  
 2    2   0.5  15  
 3    3   0.5  15  
 1    2   0.5  15  
 3    2   0.5  15  

 ------
 Df2>
 wk1, id, col1, col2, wk2, id, col1, col2, wk3,  id, col1, col2,...
 1    1   0.5  15      2    1   Nan   Nan   3    1   Nan   Nan
 1    2   0.5  15      2    2   0.5  15     3    2   0.5    15
 1    3   Nan  Nan     2    3   Nan   Nan   3    3   0.5    15
ジェズリール

使用する:

#create dictionary for rename columns for correct sorting
d = dict(enumerate(df.columns))
d1 = {v:k for k, v in d.items()}

#first add missing values for each `wk` and `id`
df1 = df.set_index(['wk', 'id']).unstack().stack(dropna=False).reset_index()

#for each id create DataFrame, reshape by unstask and rename columns
df1 = (df1.groupby('id')
       .apply(lambda x: pd.DataFrame(x.values, columns=df.columns))
       .unstack()
       .reset_index(drop=True)
       .rename(columns=d1, level=0)
       .sort_index(axis=1, level=1)
       .rename(columns=d, level=0))

#convert values to integers if necessary
df1.loc[:, ['wk', 'id']] = df1.loc[:, ['wk', 'id']].astype(int)

#flatten MultiIndex in columns
df1.columns = ['{}_{}'.format(a, b) for a, b in df1.columns]
print (df1)

   wk_0  id_0  col1_0  col2_0  wk_1  id_1  col1_1  col2_1  wk_2  id_2  col1_2  \
0     1     1     0.5    15.0     2     1     NaN     NaN     3     1     NaN   
1     1     2     0.5    15.0     2     2     0.5    15.0     3     2     0.5   
2     1     3     NaN     NaN     2     3     NaN     NaN     3     3     0.5   

   col2_2  
0     NaN  
1    15.0  
2    15.0  

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pandasデータフレームの列を行に変換します

分類Dev

Pandasデータフレーム:列の日付を行の値に変換します

分類Dev

pandasデータフレームで列を複数の行に変換する

分類Dev

パンダデータフレームの変換-一部の行の値を列に変換します

分類Dev

列を行に変換し、データフレームに配置します

分類Dev

Pandasデータフレームで、列ヘッダーを最初の行に、行ヘッダーを最初の列に変換します

分類Dev

複数の行を持つPandasデータフレームを1つの行に変換します

分類Dev

pandasデータフレームで列を時間に変換します

分類Dev

データフレーム行のグループの列値を列のリストに変換します

分類Dev

datetime文字列をpandasデータフレームのDay、Month、Yearの新しい列に変換します

分類Dev

ndarrayをpandasデータフレームに変換します

分類Dev

Pythonパンダのデータフレームの行または列をnumpy配列に変換します

分類Dev

Pythonパンダのデータフレームの行または列をnumpy配列に変換します

分類Dev

データフレームのすべての行を配列に変換し、関数に渡します

分類Dev

pandasデータフレームの列をテーブルヘッダーに変換します

分類Dev

レベルをrのデータフレーム列に変換します

分類Dev

インデックス付きのnumpy配列をpandasデータフレームに変換します

分類Dev

データフレームのjson列を変換します

分類Dev

RDDのJSON行をApacheSparkのデータフレームに変換します

分類Dev

dplyr / tidyrを使用して、Rデータフレームの行を列に変換します

分類Dev

リストをすべてのデータフレーム行の文字列に変換します

分類Dev

python pandasは、データフレームを目的のdictの配列に変換します

分類Dev

データフレームの行をベクトルに変換します

分類Dev

pandasデータフレームgroupbyインデックスを作成し、行の値を列に変換します

分類Dev

pandasデータフレームの列をStringからFloatに変換します

分類Dev

pandasデータフレームの列をfloatからintに変換します

分類Dev

pandasデータフレームで列の値を16進数から2進数に変換します

分類Dev

複数の列のデータを持つ同じ列の行データを新しいデータフレームに変換します

分類Dev

pysparkデータフレームの列を小文字に変換します

Related 関連記事

  1. 1

    Pandasデータフレームの列を行に変換します

  2. 2

    Pandasデータフレーム:列の日付を行の値に変換します

  3. 3

    pandasデータフレームで列を複数の行に変換する

  4. 4

    パンダデータフレームの変換-一部の行の値を列に変換します

  5. 5

    列を行に変換し、データフレームに配置します

  6. 6

    Pandasデータフレームで、列ヘッダーを最初の行に、行ヘッダーを最初の列に変換します

  7. 7

    複数の行を持つPandasデータフレームを1つの行に変換します

  8. 8

    pandasデータフレームで列を時間に変換します

  9. 9

    データフレーム行のグループの列値を列のリストに変換します

  10. 10

    datetime文字列をpandasデータフレームのDay、Month、Yearの新しい列に変換します

  11. 11

    ndarrayをpandasデータフレームに変換します

  12. 12

    Pythonパンダのデータフレームの行または列をnumpy配列に変換します

  13. 13

    Pythonパンダのデータフレームの行または列をnumpy配列に変換します

  14. 14

    データフレームのすべての行を配列に変換し、関数に渡します

  15. 15

    pandasデータフレームの列をテーブルヘッダーに変換します

  16. 16

    レベルをrのデータフレーム列に変換します

  17. 17

    インデックス付きのnumpy配列をpandasデータフレームに変換します

  18. 18

    データフレームのjson列を変換します

  19. 19

    RDDのJSON行をApacheSparkのデータフレームに変換します

  20. 20

    dplyr / tidyrを使用して、Rデータフレームの行を列に変換します

  21. 21

    リストをすべてのデータフレーム行の文字列に変換します

  22. 22

    python pandasは、データフレームを目的のdictの配列に変換します

  23. 23

    データフレームの行をベクトルに変換します

  24. 24

    pandasデータフレームgroupbyインデックスを作成し、行の値を列に変換します

  25. 25

    pandasデータフレームの列をStringからFloatに変換します

  26. 26

    pandasデータフレームの列をfloatからintに変換します

  27. 27

    pandasデータフレームで列の値を16進数から2進数に変換します

  28. 28

    複数の列のデータを持つ同じ列の行データを新しいデータフレームに変換します

  29. 29

    pysparkデータフレームの列を小文字に変換します

ホットタグ

アーカイブ