首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >根据条件合并行

根据条件合并行
EN

Stack Overflow用户
提问于 2021-03-11 10:25:49
回答 2查看 77关注 0票数 2

我的df是这样的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Date    Description  Debit     Credit     Balance originalIdx
0   01-03-19    AAAA        NaN        NaN        49Cr       0
1   01-03-19    ASSS        NaN      6,000.00     55Cr       1
2   NaN         XYZ         ABC        saa        NaN        1
3   01-03-19    ABZ        289.00      NaN        55Cr       3

我想要这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      Date     Description       Debit        Credit     Balance  originalIdx
0   01-03-19    AAAA              NaN          NaN        49Cr        0
1   01-03-19    ASSSXYZABCsaa     NaN        6,000.00     55Cr        1
3   01-03-19    ABZ              289.00         NaN       55Cr        3

如果originalIdx相同,我想合并行,因此合并描述列中的行

这是我的实时数据

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-11 11:49:35

假设如果需要合并行,Date将具有NaN,以下是代码。

首先创建一个虚列merged。它将合并DescriptionDebitCredit的所有值。仅当值为alpha时才会合并(不包括数字值)

然后使用groupby transform (λ)函数替换Description

如果行的NaN为Date,则dropna。还要删除temp列merged

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df['merged'] = df[['Description','Debit','Credit']].apply(lambda x: ''.join([str(a) for a in x if pd.notnull(a) and not isinstance(a, float)]) ,axis=1)

df['Description'] = df.groupby("originalIdx")['merged'].transform(lambda x: "".join(x))
df.dropna(subset=['Date'],inplace=True)
df.drop(columns='merged',inplace=True)
print (df)

这将为您提供:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       Date    Description  Debit  Credit Balance  originalIdx
0  01-03-19           AAAA    NaN     NaN    49Cr            0
1  01-03-19  ASSSXYZABCsaa    NaN  6000.0    55Cr            1
3  01-03-19            ABZ  289.0     NaN    55Cr            3

下面是包含数据和输出的完整代码。

将您的df['merged']替换为以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df['merged'] = df[['Description','Debit','Credit']].apply(lambda x: ''.join([str(a) for a in x if pd.notnull(a) and not isinstance(a, float)]) ,axis=1)

完整代码为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
pd.set_option('display.max_columns', 200)
pd.set_option('display.max_colwidth', 250)
c = ['Date','Description','Debit','Credit','Balance','originalIdx']
d = [['01-03-19','FORTAP-MUMBAI/',np.NaN, np.NaN, '49656.25Cr',0],
    ['01-03-19','FORTAP-MUMBAI/******',np.NaN,6000.00,'55656.25Cr',1],
    [np.NaN,'UP/*ABC*/*DEF*','UPI/*PQR*/*XYZ*','paytm/NA',np.NaN,1],
['01-03-19','MBK/*ABCDEF*/*ZZZ*',289.00,np.NaN,'55357.25Cr',3]]
df = pd.DataFrame(d,columns=c)
print (df)
df['merged'] = df[['Description','Debit','Credit']].apply(lambda x: ''.join([str(a) for a in x if pd.notnull(a) and not isinstance(a, float)]) ,axis=1)
df['Description'] = df.groupby("originalIdx")['merged'].transform(lambda x: "".join(x))
df.dropna(subset=['Date'],inplace=True)
df.drop(columns='merged',inplace=True)
print (df)

附加输出之前和之后:

之前:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       Date           Description            Debit    Credit     Balance  originalIdx  
0  01-03-19        FORTAP-MUMBAI/              NaN       NaN  49656.25Cr             0  
1  01-03-19  FORTAP-MUMBAI/******              NaN    6000.0  55656.25Cr             1  
2       NaN        UP/*ABC*/*DEF*  UPI/*PQR*/*XYZ*  paytm/NA         NaN             1  
3  01-03-19    MBK/*ABCDEF*/*ZZZ*            289.0       NaN  55357.25Cr             3  

之后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       Date                                                Description  Debit  Credit     Balance  originalIdx  
0  01-03-19                                             FORTAP-MUMBAI/    NaN     NaN   49656.25Cr           0  
1  01-03-19  FORTAP-MUMBAI/******UP/*ABC*/*DEF*UPI/*PQR*/*XYZ*paytm/NA    NaN  6000.0   55656.25Cr           1  
3  01-03-19                                         MBK/*ABCDEF*/*ZZZ*  289.0     NaN   55357.25Cr           3  
票数 2
EN

Stack Overflow用户

发布于 2021-03-11 11:29:42

我知道你用的是熊猫!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.fillna("").groupby("originalIdx").agg(lambda x: "".join(x))

你可以用这一行很容易做到。

我们对列进行分组,并使用agg执行用于连接输出的lambda函数

编辑:

为了控制数据None,我们使用.fillna ("").将None替换为空字符串

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66580650

复制
相关文章
[机器学习必知必会]牛顿法与拟牛顿法
同梯度下降法一样,牛顿法和拟牛顿法也是求解无约束最优化问题的常用方法。牛顿法本身属于迭代算法,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似海赛矩阵的逆矩阵或海赛矩阵,简化了这一计算过程。
TOMOCAT
2020/06/09
1.1K0
[机器学习必知必会]牛顿法与拟牛顿法
牛顿法与拟牛顿法
牛顿法和拟牛顿法是求解无约束最优化的常用方法,有收敛速度快的优点. 牛顿法属于迭代算法,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算复杂. 拟牛顿法通过正定矩阵近似海赛矩阵的逆矩阵,简化了这个过程.
JNJYan
2019/01/18
1.2K0
机器学习 学习笔记(4)牛顿法 拟牛顿法
的值,函数f(x)有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0.特别是当
2018/09/03
1.5K0
机器学习 学习笔记(4)牛顿法 拟牛顿法
理解牛顿法
牛顿法是数值优化算法中的大家族,她和她的改进型在很多实际问题中得到了应用。在机器学习中,牛顿法是和梯度下降法地位相当的的主要优化算法。在本文中,SIGAI将为大家深入浅出的系统讲述牛顿法的原理与应用。
SIGAI学习与实践平台
2018/08/07
1.6K0
理解牛顿法
牛顿法和牛顿迭代法一样吗_牛顿迭代法流程图
牛顿法,大致的思想是用泰勒公式的前几项来代替原来的函数,然后对函数进行求解和优化。牛顿法和应用于最优化的牛顿法稍微有些差别。
全栈程序员站长
2022/09/20
7410
Python实现所有算法-牛顿优化法
求导是数学计算中的一个计算方法,它的定义就是,当自变量的增量趋于零时,因变量的增量与自变量的增量之商的极限。在一个函数存在导数时,称这个函数可导或者可微分。可导的函数一定连续。不连续的函数一定不可导。
云深无际
2022/08/05
8810
Python实现所有算法-牛顿优化法
拟牛顿法面面俱到(一)--牛顿插值法
这次带来的是拟牛顿法系列,本系列的目标是完全理解拟牛顿法,包括其中涉及到的知识,比如泰勒公式、海森矩阵等,泰勒公式大家都很熟悉,不过它是怎么推导出来的呢?想必大家都不是很了解吧,这要从牛顿插值法说起,本节就先来讲解一下牛顿插值法。
石晓文
2018/07/25
2.3K1
拟牛顿法面面俱到(一)--牛顿插值法
算法细节系列(3):梯度下降法,牛顿法,拟牛顿法
话不多说,直接进入主题。在我看来,不管是梯度下降法还是牛顿法,它们都可以归结为一个式子,即
用户1147447
2019/05/26
2.3K0
优化器--牛顿法总结
---这里记录下一些关于牛顿法来作为优化器的个人笔记 :) 关于牛顿法,先不说其中的概念,来简单看一个例子? 不用计算器,如何手动开一个值的平方根,比如计算{sqrt(a) | a=4 } ? 不用程序和代码如何求?   ----比较简单有木有,直接上用公式来套就好了.       xt = ( xt-1 + ( a / xt-1 ) ) / 2       我们看 sqrt(4) 这个值的区间在1<=sqrt(4)<=4里,写成这种形式吧[1,4],我们令x0 = 1,       x = ( 1 + (
Gxjun
2018/03/27
1.4K0
优化器--牛顿法总结
优化算法——牛顿法(Newton Method)
    除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法。牛顿法的基本思想是利用迭代点
felixzhao
2019/02/13
30.4K1
抛物线法、牛顿法、弦截法求根实例
解题思路:按部就班,套公式编写程序即可注意控制精度,要求准确到四位有效数字,即要求准确解和所得近似解误差不超过
glm233
2020/09/28
2K0
抛物线法、牛顿法、弦截法求根实例
牛顿迭代法求开方
多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数
王小明_HIT
2020/03/11
1.2K0
优化算法——牛顿法(Newton Method)
一、牛顿法概述     除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法。牛顿法的基本思想是利用迭代点 处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似
felixzhao
2018/03/16
2.4K0
优化算法——牛顿法(Newton Method)
线性化和牛顿法
如何使用导数去估算特定的量. 例如, 假设想不借助计算器就得到 的一个较好估算. 我们知道 比 略大, 所以显然可以说 大约 比 3 多一点. 这没问题, 但其实可以不费太多劲就做出一个好得多的估算. 下面是具体做法.
用户3577892
2021/03/13
8660
牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method)                    简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出。但是,这一方法在牛顿生前并未公开发表。 牛顿法的
Angel_Kitty
2018/04/08
2K0
牛顿迭代法(Newton's Method)
牛顿法和梯度下降法的比较
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Steve Wang
2019/10/22
1K0
牛顿法和梯度下降法的比较
牛顿迭代法的可视化详解
来源:DeepHub IMBA本文约1800字,建议阅读10分钟本文利用可视化方法,为你直观地解析牛顿迭代法。 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 以 Isaac Newton 和 Joseph Raphson 命名的 Newton-Raphson 方法在设计上是一种求根算法,这意味着它的目标是找到函数 f(x)=0 的值 x。在几何上可以将其视为 x
数据派THU
2022/03/04
6250
牛顿法(Newton Method)求解f(x)=0
https://en.wikipedia.org/wiki/Newton%27s_method
黑豆梨
2018/06/16
3.2K0
牛顿法(Newton Method)求解f(x)=0
牛顿迭代法求解平方根
迭代,是一种数值方法,具体指从一个初始值,一步步地通过迭代过程,逐步逼近真实值的方法。 与之相对的是直接法,也就是通过构建解析解,一步求出问题的方法。
用户1147754
2019/05/27
1.5K0
优化算法——拟牛顿法之DFP算法
一、牛顿法    image.png image.png 二、DFP拟牛顿法 1、DFP拟牛顿法简介         DFP拟牛顿法也称为DFP校正方法,DFP校正方法是第一个拟牛顿法,是有David
felixzhao
2018/03/19
2.7K0
优化算法——拟牛顿法之DFP算法

相似问题

Python -牛顿法

13

多元牛顿法Python程序

129

python /枕中的牛顿法

18

编程牛顿法Python3.6

111

python上的牛顿-高斯逼近法

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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