2017-10-23 10 views
2

私はパンダのデータフレームを取ろうとしており、いくつかの条件に基づいて小さいミディアムまたは大きな値の新しいカラム 'Size_Category'を追加した後、パンダのデータフレームオブジェクトを返します。私はこれを行うと、それは私にパンダでのコンディショニング

シリーズの真理値があいまいであるというエラーを与える

mod_df = df.copy(deep=True) 
mod_df.loc[(mod_df['Length'] <= 300 , 'Size_Category')] = 'small' # condition, new_column 
mod_df.loc[(mod_df['Length'] <= 300 | mod_df['Length'] > 450) , 'Size_Category')] = 'medium' # condition, new_column 
mod_df.loc[(mod_df['Length'] >= 450, 'Size_Category')] = 'large' # condition, new_column 

。 a.empty、a.bool()、a.item()、a.any()またはa.all()を使用します。

どうすれば対応できますか?あなたは()が欠け

+0

私の答えは参考になりました場合は、それaccept' 'を忘れないでください。ありがとう。 – jezrael

答えて

2

mod_df.loc[(mod_df['Length'] <= 300) | (mod_df['Length'] > 450) , 'Size_Category')] 

別の解決策は、cutを使用している:

df = pd.DataFrame({'Length': [0,10,300,400,449,450,500]}) 

bins = [-np.inf, 300, 449, np.inf] 
labels=['small','medium','large'] 
df['Size_Category'] = pd.cut(df['Length'], bins=bins, labels=labels) 
print (df) 
    Length Size_Category 
0  0   small 
1  10   small 
2  300   small 
3  400  medium 
4  449  medium 
5  450   large 
6  500   large 
関連する問題