更新pandas数据帧值会分配Nan

时间:2018-03-23 13:55:03

标签: pandas dataframe

我有一个包含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中

1 个答案:

答案 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)