我有一个包含3列的数据框:Col1,Col2和Col3。
玩具示例
select x.Rec.query('nrZamowienia').value('.', 'nvarchar(2000)') AS 'NrZamowienia'
from @XML.nodes('declare namespace
s="http://cyfrowypolsat.pl/interfejsy/umowy/zamowieniaom/v1/Zdarzenie";
s:powiadomOZdarzeniu/powiadomienie') as x(Rec)
获得:
d = {'Col1':['hello','k','hello','we','r'],
'Col2':[10,20,30,40,50],
'Col3':[1,2,3,4,5]}
df = pd.DataFrame(d)
我选择 Col1 Col2 Col3
0 hello 10 1
1 k 20 2
2 hello 30 3
3 we 40 4
4 r 50 5
的值,使Col2
中的值为'hello'
Col1
这会给我一个系列,在那里我可以看到my_values = df.loc[df['Col1']=='hello']['Col2']
的值以及索引。
Col2
现在假设我想将此值分配给Col3。
我只想替换那些值(索引0和2),保持Col3中的其他值不被修改
我试过了:
0 10
2 30
Name: Col2, dtype: int64
但是这会将df['Col3'] = my_values
分配给其他值(Col1不是你好的那些)
Nan
如何更新Col3中的某些值而不更改其他值?
Col1 Col2 Col3
0 hello 10 10
1 k 20 NaN
2 hello 30 30
3 we 40 NaN
4 r 50 NaN
简而言之:
拥有my_values我想把它们放在Col3中
答案 0 :(得分:1)
或者只是基于np.where
df['Col3']=np.where(df['Col1'] == 'hello',df.Col2,df.Col3)
如果基于您的myvalue
df.loc[my_values.index,'col3']=my_values
或者您可以update
df['Col3'].update(my_values)