2016-07-26 6 views
2

私はこの問題を解決するためにPythonでpandasを使用しようとしています。私は約1000列のデータフレームを持っています。列ごとに、私は数学的な操作のためのブール値を返したいのですが - 特にColumn AからColumn n => 0Pythonで列を繰り返して特定の列と比較します

"ID" "Column A" "Column B" "Column C" "Column D" 
"A" 100   200   300   50 
"B" 75   20   74   500 

はのはColumn A私は比較のために使用したい行であると仮定しましょう。結果は次のようなデータフレームになります。

"ID" "Column A" "Column B" "Column C" "Column D" 
"A" 100   False  False  True 
"B" 75   True  True  False 

ありがとうございました。

答えて

0

これはそれを行う必要があります。

c = 'Column A' 
d = df.set_index('ID') 
lt = d.drop(c, axis=1).lt(d[c], axis=0) 
pd.concat([d[c], lt], axis=1).reset_index() 

enter image description here

1

あなたは(結果がゼロ以上であれば、その後のテストをターゲット列から各列のシリーズを減算しlambda機能を適用することができますge(0))。

d = {'Column A': {'A': 100, 'B': 75}, 
    'Column B': {'A': 200, 'B': 20}, 
    'Column C': {'A': 300, 'B': 74}, 
    'Column D': {'A': 50, 'B': 500}} 
df = pd.DataFrame(d) 

col = "Column A" 
other_cols = [c for c in df if c != col] 

>>> pd.concat([df[[col]], 
       df[other_cols].apply(lambda series: df[col].sub(series).ge(0))], axis=1) 
    Column A Column B Column C Column D 
ID          
A  100 False False  True 
B   75  True  True False 
0
df = df.set_index("ID") 
dd = df.apply(lambda x: x.lt(df["Column A"])) 
dd["Column A"] = df["Column A"] 
dd 

     Column A Column B Column C Column D 
ID          
A  100 False False  True 
B   75  True  True False 
関連する問題