IDとカテゴリカルの2つの列でデータフレームを再形成しようとしています。これにより、一意のカテゴリカル値ごとに1つの列が作成されます。
これが私が持っているものです:
ID Animal
foo cat
foo dog
bar cat
baz cat
biz dog
biz cow
biz dog
そして、これが私が欲しいものです:
ID cat dog cow
foo 1 1 0
bar 1 0 0
baz 1 0 0
biz 0 1 2
私は試した:
df.groupby(by='ID').count()
これは:
Index Animal
foo 2
bar 1
baz 1
biz 3
私も試しました:
df.pivot_table(values='Animal')
df.stack(level='Animal')
前者はDataErrorをスローします:集計する数値タイプはありません、後者はKeyErrorをスローします:レベル動物は名前と同じでなければなりません(なし)
crosstab()メソッドを使用できます。
In [17]: pd.crosstab(df.ID, df.Animal).rename_axis(None, axis=1)
Out[17]:
cat cow dog
ID
bar 1 0 0
baz 1 0 0
biz 0 1 2
foo 1 0 1
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加