Pandas 更新数据帧值指定Nan
我有一个包含3列的数据框架:Col1、Col2和Col3 玩具示例Pandas 更新数据帧值指定Nan,pandas,dataframe,Pandas,Dataframe,我有一个包含3列的数据框架:Col1、Col2和Col3 玩具示例 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
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
的值,以便Col1
中的值为“hello”
my_values = df.loc[df['Col1']=='hello']['Col2']
这将返回一个序列,其中可以看到Col2
的值以及索引
0 10
2 30
Name: Col2, dtype: int64
现在假设我想把这个值赋给Col3
我只想替换那些值(索引0和2),保持Col3中的其他值不变
我试过:
df['Col3'] = my_values
但这会将Nan
分配给其他值(Col1不是hello的值)
如何更新Col3中的某些值,而保持其他值不变
Col1 Col2 Col3
0 hello 10 10
1 k 20 2
2 hello 30 30
3 we 40 4
4 r 50 5
因此,简言之:
有了我的_值,我想把它们放在Col3中,或者仅仅基于
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)
好,对。更新正是我要找的!它需要一个系列,并且只使用它的值更新列。@SembeiNorimaki hah,很高兴我能帮上忙
df['Col3'].update(my_values)