2016-10-08 11 views
3

私の.csvファイルには51個の列がありますが、int型の64個のデータ型をすべて一括でカテゴリに変換する必要があります。私はあなたが、その後ループは、各列の種類を変更するには、リストにカラム名を取得することができますdata[].Pythonを使用してすべての列を数値からカテゴリに変換する方法

data[].astype('categorical') 
+0

混乱を避けるために:それは.astypeする必要があります( 'カテゴリ')(https://pandas.pydata.org/pandas-docs/安定/ categorical.html) – Wouter

答えて

1

内のすべてのカラム名を言及する必要があります。

import pandas as pd 
import numpy as np 

# create example dataframe 
cats = ['A', 'B', 'C', 'D', 'E'] 

int_matrix = np.random.randint(10, size=(7,5)) 

df = pd.DataFrame(data = int_matrix, columns=cats) 

print("Original example data\n") 
print(df) 
print(df.dtypes) 

# get column names of data frame in a list 
col_names = list(df) 
print("\nNames of dataframe columns") 
print(col_names) 

# loop to change each column to category type 
for col in col_names: 
    df[col] = df[col].astype('category',copy=False) 

print("\nExample data changed to category type") 
print(df) 
print(df.dtypes) 

この小さなプログラムの出力は次のとおりです。

Original example data 

    A B C D E 
0 0 4 9 2 9 
1 2 5 2 4 1 
2 1 1 0 5 7 
3 1 2 5 4 0 
4 9 2 6 5 3 
5 3 3 2 1 7 
6 6 0 8 7 3 
A int32 
B int32 
C int32 
D int32 
E int32 
dtype: object 

Names of dataframe columns 
['A', 'B', 'C', 'D', 'E'] 

Example data changed to category type 
    A B C D E 
0 0 4 9 2 9 
1 2 5 2 4 1 
2 1 1 0 5 7 
3 1 2 5 4 0 
4 9 2 6 5 3 
5 3 3 2 1 7 
6 6 0 8 7 3 
A category 
B category 
C category 
D category 
E category 
dtype: object 
+0

ありがとう、それは働いた:) – 1111

関連する問題