pandas meltのチートシート
概要
- pivotの逆の操作の関数
- イメージとして横に広いテーブルを縦に長いテーブルに変換する
具体例
example = [["date", "twitter", "youtube", "tiktok"],
["a", "10", "10", "0"],
["b", "100", "20", "50"],
["c", "1000", "50", "1000"]]
import pandas as pd
df = pd.DataFrame(example[1:])
df.columns = example[0]
| date | youtube | tiktok | ||
|---|---|---|---|---|
| 0 | a | 10 | 10 | 0 |
| 1 | b | 100 | 20 | 50 |
| 2 | c | 1000 | 50 | 1000 |
このようなデータがある時、twitter, youtube, tiktokのカラム名をバリューにして縦に長くする
df_melt = pd.melt(df, id_vars=["date"], value_vars=["twitter", "youtube", "tiktok"]).sort_values(by=["date"])
print(df_melt.to_markdown())
| date | variable | value | |
|---|---|---|---|
| 0 | a | 10 | |
| 3 | a | youtube | 10 |
| 6 | a | tiktok | 0 |
| 1 | b | 100 | |
| 4 | b | youtube | 20 |
| 7 | b | tiktok | 50 |
| 2 | c | 1000 | |
| 5 | c | youtube | 50 |
| 8 | c | tiktok | 1000 |