【问题标题】:Updating pandas dataframe values assigns Nan更新 pandas 数据框值分配 Nan
【发布时间】:2018-03-23 13:55:03
【问题描述】:

我有一个包含 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     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 的值)

    Col1  Col2  Col3
0  hello    10    10
1      k    20   NaN
2  hello    30    30
3     we    40   NaN
4      r    50   NaN

如何更新 Col3 中的某些值而不影响其他值?

    Col1  Col2  Col3
0  hello    10    10
1      k    20   2
2  hello    30    30
3     we    40   4
4      r    50   5

所以,简而言之:

拥有 my_values 我想将它们放在 Col3 中

【问题讨论】:

    标签: pandas dataframe


    【解决方案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)
    

    【讨论】:

    • 好的,是的。 更新正是我要找的!它需要一个系列并仅使用其值更新一列。
    • @SembeiNorimaki 哈哈,很高兴我能帮上忙
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多