Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Pandas dataframe:根据另一列中的值替换多行

Pandas dataframe:根据另一列中的值替换多行
EN

Stack Overflow用户
提问于 2018-07-30 05:50:11
回答 2查看 2.1K关注 0票数 2

我正在尝试用另一个数据框列中的值替换另一个数据框列中的一些值。下面是数据框的外观。df2有很多行和列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1

    0                   1029
0   aaaaa               Green
1   bbbbb               Green
2   fffff               Blue
3   xxxxx               Blue
4   zzzzz               Green

df2
    0       1   2     3  ....    1029
0   aaaaa   1   NaN   14         NaN
1   bbbbb   1   NaN   14         NaN
2   ccccc   1   NaN   14         Blue
3   ddddd   1   NaN   14         Blue
...    
25  yyyyy   1   NaN   14         Blue
26  zzzzz   1   NaN   14         Blue

最终的df应该如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    0       1   2     3  ....    1029
0   aaaaa   1   NaN   14         Green 
1   bbbbb   1   NaN   14         Green
2   ccccc   1   NaN   14         Blue
3   ddddd   1   NaN   14         Blue
...    
25  yyyyy   1   NaN   14         Blue
26  zzzzz   1   NaN   14         Green

因此,基本上需要做的是,需要匹配df1[0]df[2],然后对于匹配的行,df2[1029]需要将值替换为df1[1029]中的相应行。我不想丢失df1['1029']之外的df2['1029']中的任何值

我相信python中的re模块可以做到这一点?这就是我到目前为止所知道的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
for line in replace:
line = re.sub(df1['1029'], 
              '1029',
              line.rstrip())

print(line)

但它肯定不起作用。

我也可以像在merged1 = df1.merge(df2, left_index=True, right_index=True, how='inner')中一样使用merge,但它不会替换内联的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-30 07:02:45

您需要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1 = pd.DataFrame({'0':['aaaaa','bbbbb','fffff','xxxxx','zzzzz'], '1029':['Green','Green','Blue','Blue','Green']})

df2 = pd.DataFrame({'0':['aaaa','bbbb','ccccc','ddddd','yyyyy','zzzzz',], '1029':[None,None,'Blue','Blue','Blue','Blue']})


# Fill NaNs
df2['1029'] = df2['1029'].fillna(df1['1029'])

# Merge the dataframes 
df_ = df2.merge(df1, how='left', on=['0'])

df_['1029'] = np.where(df_['1029_y'].isna(), df_['1029_x'], df_['1029_y'])

df_.drop(['1029_y','1029_x'],1,inplace=True)
print(df_)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       0   1029
0   aaaa  Green
1   bbbb  Green
2  ccccc   Blue
3  ddddd   Blue
4  yyyyy   Blue
5  zzzzz  Green
票数 1
EN

Stack Overflow用户

发布于 2018-07-30 07:00:47

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'0':['aa','bb','ff','xx', 'zz'], '1029':['Green', 'Green', 'Blue', 'Blue', 'Green']})
df2 = pd.DataFrame({'0':['aa','bb','cc','dd','ff','gg','hh','xx','yy', 'zz'], '1': [1]*10, '2': [np.nan]*10, '1029':[np.nan, np.nan, 'Blue', 'Blue', np.nan, np.nan, 'Blue', 'Green', 'Blue', 'Blue']})
df1
    0   1029
0  aa  Green
1  bb  Green
2  ff   Blue
3  xx   Blue
4  zz  Green

df2
    0  1   1029   2
0  aa  1    NaN NaN
1  bb  1    NaN NaN
2  cc  1   Blue NaN
3  dd  1   Blue NaN
4  ff  1    NaN NaN
5  gg  1    NaN NaN
6  hh  1   Blue NaN
7  xx  1  Green NaN
8  yy  1   Blue NaN
9  zz  1   Blue NaN

如果两个数据框中的列'0‘已排序,则此操作将起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df2.loc[(df2['1029'].isna() & df2['0'].isin(df1['0'])), '1029'] = df1['1029'][df2['0'].isin(df1['0'])].tolist()

df2
    0  1   1029   2
0  aa  1  Green NaN
1  bb  1  Green NaN
2  cc  1   Blue NaN
3  dd  1   Blue NaN
4  ff  1  Green NaN
5  gg  1    NaN NaN
6  hh  1   Blue NaN
7  xx  1  Green NaN
8  yy  1   Blue NaN
9  zz  1   Blue NaN
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51587685

复制
相关文章
win10 uwp 解决 SerialDevice.FromIdAsync 返回空
调用 SerialDevice.FromIdAsync 可能返回空,因为没有设置 package.appmanifest 可以使用端口
林德熙
2019/03/13
6320
ora00904::标识符无效_ora-00911 无效字符
ORA:即Oracle报错。 标识符无效:SQL语句中,这个字段名不在表中。 解决方案:修改SQL语句中对应的字段或者修改表里面对应的列名。
全栈程序员站长
2022/11/01
1.4K0
ora00904::标识符无效_ora-00911 无效字符
caffe源码分析-DataReader
DataReader作为DataLayer的数据成员变量,以多线程的方式从数据库(如lmdb, hdf5)读取数据:
bear_fish
2019/02/25
5030
caffe源码分析-DataReader
UWP WPF 解决 xaml 设计显示异常
例如我创建一个用户控件 TsjcyubtnTtqtjem 那么就可以在构造函数添加下面代码
林德熙
2022/08/04
7480
UWP WPF 解决 xaml 设计显示异常
例如我创建一个用户控件 TsjcyubtnTtqtjem 那么就可以在构造函数添加下面代码
林德熙
2018/09/19
1.1K0
UWP WPF 解决 xaml 设计显示异常
win10 uwp 捕获后台线程异常
本文告诉大家如何在 UWP 中捕获全局的后台线程异常,在出现后台线程异常时,将会让 UWP 程序闪退,但是在退出之前还是可以执行自己的代码
林德熙
2022/08/12
6150
win10 UWP 访问网页
Windows10 UWP 要访问 csdn博客,可以使用Windows.Web.Http.HttpClient,下面尝试访问一下我的博客 http://blog.csdn.net/lindexi_gd/article/details/50392343
林德熙
2022/08/04
5520
win10 UWP 访问网页 设置代理WebView
Windows10 UWP 要访问 csdn博客,可以使用Windows.Web.Http.HttpClient,下面尝试访问一下我的博客 http://blog.csdn.net/lindexi_gd/article/details/50392343
林德熙
2018/09/18
1.6K0
win10 UWP 访问网页
            设置代理WebView
win10 uwp 存放网络图片到本地 下载图片保存图片从本地打开所有代码Nuget安装Microsoft.Toolkit.Uwp
有时候我们的网络很垃圾,我的的UWP要在第一次打开网络图片,就把图片存放到本地,下次可以从本地打开。 有时候用户使用的是流量网络,不能每次都联网下载。 我们不得在应用存放用户打开的图片。 这就是先把图片下载,然后显示出来,存放到本地,接着下次要使用就可以从本地获取。 最好这个和我们用户是透明,我们不知道图片在哪,是本地还是网络,只要给一个Uri就有一个图片。
林德熙
2019/03/13
1.3K0
asp.net mvc HandleErrorAttribute 异常错误处理 无效!
现象:filters.Add(new HandleErrorAttribute()); 使用了全局的异常处理过滤。
旺财的城堡
2018/11/20
1.2K0
win10 uwp 存放网络图片到本地 下载图片保存图片从本地打开所有代码Nuget安装
有时候我们的网络很垃圾,我的的UWP要在第一次打开网络图片,就把图片存放到本地,下次可以从本地打开。 有时候用户使用的是流量网络,不能每次都联网下载。 我们不得在应用存放用户打开的图片。 这就是先把图片下载,然后显示出来,存放到本地,接着下次要使用就可以从本地获取。 最好这个和我们用户是透明,我们不知道图片在哪,是本地还是网络,只要给一个Uri就有一个图片。
林德熙
2018/09/18
1.3K0
win10 uwp 读取文本GBK错误
本文讲的是解决UWP文本GBK打开乱码错误,如何去读取GBK,包括网页GBK。最后本文给出一个方法追加文本。
林德熙
2018/09/18
1.3K0
win10 uwp 应用包上传失败无效的软件包系列名称
在 2021 的时候,微软为了解决开发者不小心将应用商店证书上传到 GitHub 而不再提供应用商店证书文件下载到代码文件夹里面,因此日常开发中将会使用自己本地创建的证书。但是在实际准备发布的时候,如果没有切换证书,那么将会使用本地创建的证书进行打包,而在上传应用商店步骤失败
林德熙
2021/03/24
1.2K0
Oracle报错ORA-00904: 标识符无效 ,但是列名和表名都没有写错
一般情况下,标识符错误是因为:语句中的列名在表中不存在,修改sql语句或者修改列名即可。
星哥玩云
2022/08/17
9.5K0
PageHelper分页后,对list操作会导致分页无效
来源:blog.csdn.net/qq_35080796/article/details/105508744
JAVA葵花宝典
2021/05/11
4K0
PageHelper分页后,对list操作会导致分页无效
快速入门 .NET nanoFramework 开发 ESP32-Pico 应用
.NET 支持物联网(IoT) 应用的开发,其提供的.NET IoT 库可以让我们在运行 Windwos 和 Linux 系统的 IoT 设备上运行应用,并利用 GPIO、SPI、I2C、PWM 和串行端口等接口使用数百个传感器、显示器、输入设备。但是这并不适用于受约束的嵌入式设备,比如 ESP32、M5Stack、STM32 等。对于这些受约束的嵌入式设备,.NET nanoFramework 提供了一个很好的方案,适用于这些微控制器,能够为受限嵌入式设备编写托管代码。开发者可以利用熟悉的 IDE Visual Studio 和 .NET(C#) 知识快速编写应用程序,而无需担心微控制器的低层硬件复杂性。更方便的是,使用 Visual Studio 可以直接在真实硬件上编写、部署、调试代码。
桑榆肖物
2023/01/03
2.9K0
快速入门 .NET nanoFramework 开发 ESP32-Pico 应用
dart(二)--函数、操作符、异常dart(二)--函数、操作符、异常
函数 dart中万物皆对象,函数也是一个对象 bool isNoble(int iNumber, String str='str'){ //普通函数,有参数、有返回值(若不指定表示返回值类型则为:dynamic);参数可以指定默认值 return iNumber != null; } bool isNoble => return iNumber != null; //箭头函数,有且只能有一个表达式 isNoble(iNumber:1,String:'ssd'); //调用 void f
用户8893176
2021/08/09
3580
java 标识符
A: 不能以数字开头 B: 不能是 Java 中的关键字 C: 区分大小写 Student,student 这是两个名称
Cell
2022/02/25
1.1K0
Oracle 无效对象查询,编译无效对象
查看当前无效对象 select * from dba_objects t where t.status = 'INVALID' order by 1; 编译无效对象: 有两种方式: 1、执行sql查询结果: select 'alter '||object_type||' '||owner||'.'||object_name||' compile;' from dba_objects t where t.status = 'INVALID' order by 1; 2、脚本编译: sqlplu
Lucifer三思而后行
2021/09/22
3K0
点击加载更多

相似问题

UWP SerialDevice阅读阿杜伊诺

126

UWP SerialDevice.FromIdAsync返回null

12

UWP抛出异常:由于对象的当前状态,操作无效

12

DataReader异常

13

Windows UWP Windows.Devices.SerialCommunication.SerialDevice不工作

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文