かゆいところに手が届くpandasレシピ集No.1
かゆいこと
「カテゴリ名(index)」と「値(value)」が文字列として1つの要素となってしまっている配列・DataFrameをなんとかしたい。
各カテゴリ(index)をcolumn名とする列に値を割り振ろう。
ID | クソデカ文字列 |
---|---|
0 | A 0, B 1, C 2 |
1 | B 3, D 4 |
2 | A 5, C 6 |
3 | C 7, D 8 |
↑この↑クソデカ文字列を↓こう↓したい。
ID | A | B | C | D |
---|---|---|---|---|
0 | 0 | 1 | 2 | 0 |
1 | 0 | 3 | 0 | 4 |
2 | 5 | 0 | 6 | 0 |
3 | 0 | 0 | 7 | 8 |
レシピ
各カテゴリは既知とします。
未知の場合、カテゴリのリストを作成してください。
str_to_dataframe.py
import numpy as np
import pandas as pd
def str_to_dict(x):
dic = {'A' : 0, 'B' : 0, 'C' : 0, 'D' : 0}
for xx in x.split(","):
xxs = xx.split(" ")
dic[xxs[-2]] = int(xxs[-1])
return dic
temp = df["クソデカ文字列"].apply(lambda x : pd.Series(str_to_dataframe(x)))
df = pd.concat((df, temp), axis=1)
これは早い!