2017-03-09 3 views
-1

「1未満」「1〜2」「2〜3」などの文字列を入力する必要があるパンダデータフレームに新しい列を作成したいのですが、 1単位増分で20まで。これらの文字列はdf.Data列のlook byによって割り当てられ、各行の文字列は新しい列に割り当てられます。パンダのデータフレームにラベル付きの列を作成する

おかげ

+0

を:短い答えは、関数を作成(lambda' '経由かどうかのいずれか)と' DFを使用することです['column name here']。apply(your_function) ' – MattR

答えて

0

IIUCあなたはpd.cut()メソッドを使用することができます:私が正しくあなたの質問を理解していれば

In [209]: df = pd.DataFrame({'Data':np.random.rand(15)*20}) 

In [210]: df 
Out[210]: 
     Data 
0 18.890987 
1 7.177557 
2 18.603053 
3 3.423876 
4 16.434591 
5 8.696325 
6 19.083220 
7 10.402671 
8 5.798423 
9 13.271339 
10 0.955819 
11 8.997453 
12 3.617207 
13 2.110642 
14 13.547091 

In [211]: bins = np.arange(0, 21) 

In [212]: labels = ['less than 1'] + ['between {} and {}'.format(i, i+1) for i in np.arange(1, 20)] 

In [213]: df['s'] = pd.cut(df.Data, bins=bins, labels=labels, right=True) 

In [214]: df 
Out[214]: 
     Data     s 
0 18.890987 between 18 and 19 
1 7.177557 between 7 and 8 
2 18.603053 between 18 and 19 
3 3.423876 between 3 and 4 
4 16.434591 between 16 and 17 
5 8.696325 between 8 and 9 
6 19.083220 between 19 and 20 
7 10.402671 between 10 and 11 
8 5.798423 between 5 and 6 
9 13.271339 between 13 and 14 
10 0.955819  less than 1 
11 8.997453 between 8 and 9 
12 3.617207 between 3 and 4 
13 2.110642 between 2 and 3 
14 13.547091 between 13 and 14 
関連する問題