pandas dataframe update或set column [y] = x其中column [z] =' abc'

时间:2016-05-23 16:13:43

标签: python-2.7 pandas

我是蟒蛇熊猫的新手,并且没有在文档中找到答案。我有一个现有的数据框,并且我添加了一个新的列Y.我想将列Y的值设置为' abc'在列Z =' xyz'的所有行中。在sql中这将是一个简单的

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

是否有类似的方法在pandas中进行此更新?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您还需要设置其他value,则可以使用locnumpy.where

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