首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更新pandas dataframe列中的值(如果它们存在于另一个dataframe中

我有两个数据帧,第一个有所有的值,但其中一些是旧的,第二个只有一些值,但它们是新的。我想做的是用第二个数据帧中的值更新第一个数据帧中的值。

代码语言:javascript
运行
AI代码解释
复制
df_a
   A  B
0  a  1
1  b  2
2  c  3
3  d  4
4  e  5
5  f  6
6  g  7
7  h  8
8  i  9

df_b
   A  B
0  a  9
1  c  6
2  e  4

我想要的结果是:

代码语言:javascript
运行
AI代码解释
复制
df_a
   A  B
0  a  9
1  b  2
2  c  6
3  d  4
4  e  4
5  f  6
6  g  7
7  h  8
8  i  9

我如何才能做到这一点,希望没有循环?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-07 15:18:45

您可以通过set_index构造一个序列,并使用map + fillna更新值:

代码语言:javascript
运行
AI代码解释
复制
s = df_b.set_index('A')['B']
df_a['B'] = df_a['A'].map(s).fillna(df_a['B']).astype(int)

print(df_a)

   A  B
0  a  9
1  b  2
2  c  6
3  d  4
4  e  4
5  f  6
6  g  7
7  h  8
8  i  9
票数 3
EN

Stack Overflow用户

发布于 2018-10-08 03:59:21

下面是几种可以做到的方法

代码语言:javascript
运行
AI代码解释
复制
# options 1 and 2 use numpy
import numpy as np

# 1
# use numpy isin and numpy searchsorted functions
mask = np.isin(df_a.A, df_b.A)
df_a.B.values[mask] = \
    df_b.B.values[np.searchsorted(df_b.A.values,
                                  df_a.A.values[mask])]

# -----------------------------------------------------------------
# using pandas merge for next 3 methods:
merged = df_a.merge(df_b, on='A', how='outer',
                    suffixes=('_dfa', '_dfb'))

# 2
# use numpy where to fill in with df_a["B"] values
df_a['B'] = np.where(merged['B_dfb'].isnull(),
                     merged['B_dfa'],
                     merged['B_dfb']).astype(int)

# 3
# same as above but use pandas series where to fill values
df_a['B'] = merged.B_dfa.where(merged['B_dfb'].isnull(),
                               merged['B_dfb']).astype(int)

# 4
# use series fillna
df_a['B'] = merged['B_dfb'].fillna(merged['B_dfa']).astype(int)

#----------------------------------------------------------------
# for next 2 methods, make "A" column indexed
# dataframes from df_a, df_b
a = df_a.set_index('A')
b = df_b.set_index('A')

# 5
# using pandas dataframe update
a.update(b)
df_a['B'] = a['B'].values.astype(int)

# 6
# using pandas auto-align by index and pandas series where

# using pandas auto-align to index,
# add dataframe b "B" values to dataframe a (df_a indexed with column "A")
a['C'] = b['B']
# using pandas series where, fill in values from a["B"] and
# assign to df_a["B"]
df_a['B'] = a['C'].where(~a['C'].isnull(), a['B']).values.astype(int)
# or use pandas series fillna
df_a['B'] = a['C'].fillna(a['B']).values.astype(int)

# --------------------------------------------------------------------

# 7
# slightly modified version of accepted answer avoiding setting index
df_a['B'] = df_a['A'].map(dict(df_b.values)).fillna(df_a['B']).astype(int)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52689825

复制
相关文章
分离django中的媒体文件,静态文件
django项目中,占很大体积的是静态文件,媒体文件还有html代码,那我们该如何把它们分离出来以方便我们和服务器去管理和使用它们。
py3study
2020/01/05
1.7K0
Django 项目中添加静态文件夹
在 mysite 文件夹下添加一个 statics 文件夹用来存放 js 文件
py3study
2020/01/16
6830
Django 项目中添加静态文件夹
Django静态文件的处理,static 和media 文件夹的配置
也就是我们创建一个django项目之后,就要首先处理静态文件,让项目可以找到静态文件。具体步骤是
一写代码就开心
2020/12/01
8490
Django静态文件的处理,static 和media 文件夹的配置
使用sqlserver来存放和取得session
第一种是我们经常用的,第2中就是使用一个名为 state server 的机器用它的内存来存放其他机器的session 状态,其实,我们还可以在 sql server 里面来存放和取得 session。是不是第一次听说。
Java架构师必看
2021/03/22
5090
如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
angel_郁
2018/10/25
2.3K0
如何在Debian 10上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您实现Python应用程序或网站。 Django包含一个简化的开发服务器,用于在本地测试您的代码,但对于任何与生产相关的内容,都需要更安全,更强大的Web服务器。
子润先生
2021/06/16
6K0
如何在Debian 9上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您实现Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
大瓜皮
2018/11/05
6.5K0
如何在Ubuntu 18.04上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您实现Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
乌鸦
2018/10/25
6.6K0
如何在Debian 8上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您完成Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
SQL GM
2018/08/10
3.9K0
【Django】 开发:静态文件,应用和模型层
指定访问静态文件时是需要通过 /static/xxx 或 127.0.0.1:8000/static/xxx
杨丝儿
2022/02/24
1.9K0
【Django】 开发:静态文件,应用和模型层
Ubuntu 文件文件夹查看权限和设置权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
用户5005176
2021/08/25
13.5K0
使用Android MediaPlayer播放媒体文件
我们平时利用Android手机娱乐最常见的方式莫过于听歌和看电影了,当然还有玩游戏,当然,这里我要说的是针对Android对于媒体文件播放的支持。Android里面提供了MediaPlayer类来播放媒体文件,下面来看一下怎样用MediaPlayer对象来播放媒体文件: 一般来说,用MediaPlayer类来播放媒体文件有以下几个步骤:
指点
2019/01/18
2.7K0
使用Android MediaPlayer播放媒体文件
python引入相同和不同(模块)文件夹下py文件的类
从SyncMysqlMongo中引入MongoDBUtil.py和MySQLUtil.py中的两个类(这里的类名和文件名一致)
静谧星空TEL
2022/01/05
8.1K0
python引入相同和不同(模块)文件夹下py文件的类
Redis 的安装和基本使用以及在 Django 项目中的配置和使用
Redis Redis的安装好基本使用 环境 Python 3.6 Django 2.0.7 django-redis 4.9.0 Mac ???Redis坑(传送门) GitHub https://
Autooooooo
2020/11/09
1.4K0
如何使用goGetBucket扫描和发现AWS S3 Bucket
goGetBucket是一款针对AWS S3 Bucket的渗透测试与安全研究工具,在该工具的帮助下,广大研究人员可以快速扫描和发现AWS S3 Bucket。
FB客服
2023/08/08
2540
如何使用goGetBucket扫描和发现AWS S3 Bucket
Python中如何使用os模块和shutil模块处理文件和文件夹
os和shutil都是Python标准库中用于处理文件和文件夹的模块,它们都提供了许多常用的文件和文件夹操作功能,但是它们的使用场景和优势有所不同。
jackcode
2023/05/04
1.1K0
Python中如何使用os模块和shutil模块处理文件和文件夹
如何设置共享文件夹?
比如文档、图片、视频等。小编认识的好多人别说设置共享了,甚至连怎么添加已有的共享资源都不会,快来一起学习下吧!
简单并不简单
2019/07/05
12.7K1
[css] 使用css画文件夹icon和话筒icon
在一些界面上 , 如果每个icon都去找图片还是相当麻烦的 , 直接使用css画出icon就方便的多了 , 下面两个是画的文件夹和话筒的icon
唯一Chat
2021/02/01
1.3K0
[css] 使用css画文件夹icon和话筒icon
点击加载更多

相似问题

如何使用django-storages和亚马逊S3设置Django项目,但使用不同的文件夹存放静态文件和媒体文件?

63

在亚马逊S3和https中使用Django-Storages

10

如何使用django和nginx配置静态和媒体文件?

10

从S3提供Django的静态和媒体文件

32

Django中的静态文件和媒体文件有什么不同?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档