2017-06-23 10 views
2

RからPythonに来て、条件付きで他の列をチェックすることで簡単に新しい列を作成することはできません。 Pythonで同等のステートメントでシリーズの条件に基づいて新しいパンダの列を作成する

# In R, create a 'z' column based on values in x and y columns 
df <- data.frame(x=rnorm(100),y=rnorm(100)) 
df$z <- ifelse(df$x > 1.0 | df$y < -1.0, 'outlier', 'normal') 
table(df$z) 
# output below 
normal outlier 
    66  34 

試み:

import numpy as np 
import pandas as pd 
df = pd.DataFrame({'x': np.random.standard_normal(100), 'y': np.random.standard_normal(100)}) 
df['z'] = 'outlier' if df.x > 1.0 or df.y < -1.0 else 'normal' 

ただし、次の例外がスローされます。 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

これを達成するニシキヘビの方法は何ですか?あなたは、列に要素ごとの操作を行いたい場合は、このようなあなたの列をアドレスすることはできません

df['z'] = np.where((df.x > 1.0) | (df.y < -1.0), 'outlier', 'normal') 

答えて

関連する問題