1. ホーム
  2. python

Python Pandas - いくつかの列型をカテゴリに変更する

2023-11-04 12:44:21

質問

以下のCSVファイルをiPython Notebookに取り込みました。

public = pd.read_csv("categories.csv")
public

pandasをpd、nmpyをnp、matplotlib.pyplotをpltとしてインポートしました。 以下のデータ型があります(以下は要約です - 列数は約100です)。

In [36]:   public.dtypes
Out[37]:   parks          object
           playgrounds    object
           sports         object
           roading        object               
           resident       int64
           children       int64

公園」、「遊び場」、「スポーツ」、「道路」をカテゴリに変更し、残りはint64のままにしておきたいと思います(これらのカテゴリにはリッカート尺度による回答があります。

私は、次のコードを使用して、別のデータフレーム - public1 - を作成し、列の 1 つをカテゴリ タイプに変更することができました。

public1 = {'parks': public.parks}
public1 = public1['parks'].astype('category')

しかし、このコードを使って一度に数字を変更しようとすると、失敗してしまいました。

public1 = {'parks': public.parks,
           'playgrounds': public.parks}
public1 = public1['parks', 'playgrounds'].astype('category')

とはいえ、カテゴリ列だけのデータフレームを別に作りたいわけではありません。 元のデータフレームで変更してほしいのです。

これを実現するために様々な方法を試した結果、こちらのコードを試しました。 Pandas: カラムのデータ型を変更する ...

public[['parks', 'playgrounds', 'sports', 'roading']] = public[['parks', 'playgrounds', 'sports', 'roading']].astype('category')

と入力すると、以下のようなエラーが発生しました。

 NotImplementedError: > 1 ndim Categorical are not supported at this time

公園」、「遊び場」、「スポーツ」、「道路」をカテゴリに変更し、「居住者」と「子供」(および文字列、int + float である他の 94 列)はそのままにする方法はありますか? それとも、もっと良い方法があるのでしょうか? もし、どなたか提案やフィードバックがあれば、とてもありがたいのですが......髪をかきわけながら、ゆっくりと禿げそうです

事前に多くの感謝を。

edited to add - 私はPython 2.7を使用しています。

どのように解決するのですか?

for-loopを使うしかない場合もあります。

for col in ['parks', 'playgrounds', 'sports', 'roading']:
    public[col] = public[col].astype('category')