2016-05-23 5 views
1

私はpython pandasを使い慣れていません。既存のデータフレームがあり、新しい列Yを追加しました。列Z = 'xyz'のすべての行で列Yの値を 'abc'に設定します。 SQLではこれはシンプルになりますpandas dataframe updateまたはset column [y] = xここでcolumn [z] = 'abc'

update table set colY = 'abc' where colZ = 'xyz' 

このアップデートはpandasで同様に実行できますか?

ありがとうございます!

あなたも他の valueを設定する必要がある場合は、 locまたは numpy.whereを使用することができます

答えて

1

df.loc[df.Z == 'xyz', 'Y'] = 'abc' 

はサンプル:

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'X':[1,2,3], 
        'Z':['xyz',5,6], 
        'C':[7,8,9]}) 

print (df) 
    C X Z 
0 7 1 xyz 
1 8 2 5 
2 9 3 6 

df.loc[df.Z == 'xyz', 'Y'] = 'abc' 

print (df) 
    C X Z Y 
0 7 1 xyz abc 
1 8 2 5 NaN 
2 9 3 6 NaN 

df['Y1'] = np.where(df.Z == 'xyz', 'abc', 'klm') 

print (df) 
    C X Z Y Y1 
0 7 1 xyz abc abc 
1 8 2 5 NaN klm 
2 9 3 6 NaN klm 

あなたはあまりにもセット列の値を使用することができます。

df['Y2'] = np.where(df.Z == 'xyz', 'abc', df.C) 
print (df) 
    C X Z Y Y2 
0 7 1 xyz abc abc 
1 8 2 5 NaN 8 
2 9 3 6 NaN 9 
関連する問題