我是蟒蛇熊猫的新手,并且没有在文档中找到答案。我有一个现有的数据框,并且我添加了一个新的列Y.我想将列Y的值设置为' abc'在列Z =' xyz'的所有行中。在sql中这将是一个简单的
update table set colY = 'abc' where colZ = 'xyz'
是否有类似的方法在pandas中进行此更新?
谢谢!
答案 0 :(得分:1)
如果您还需要设置其他value
,则可以使用loc
或numpy.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