ymhld 发表于 2020-5-16 10:28

python如何实现pandas 中两行相加

本帖最后由 ymhld 于 2020-5-16 15:00 编辑

如何实现两行直接相加
列的会,data['列1']=data['列2']+data['列3']
有没有行直接相加的方法
如下代码也能实现N1+N2
import pandas as pd
chengji = [['N', 95,0], ['N', 100,88], ['N', 88,100],['N', 66,0]]
data=pd.DataFrame(chengji ,columns=['p','x','g'])
data1=data[['p','x']].copy()
data1['p']=data1.index.map(lambda x:"N"+str(x+1))
print(data1)

data.loc[:,'p']=data.index.map(lambda x:"N"+str(x+1))
# print(data)
# data.columns=['p','营业成本本年累计','营业收入本年累计',]
# print(data)
# data['Q']=0
# data.loc!=0,'Q']=data['营业成本本年累计']/data['营业收入本年累计']
print(data)
heji=['N1+N2',['N1','N2']]


print(data.loc.isin(heji)])
data.loc]=data.loc.isin(heji)].sum()
data.loc,'p']=heji

print(data)
data.drop(data['p'].isin(heji),inplace=True)
print(data)

zyzs010 发表于 2020-5-16 11:03

可以goupby吗,再用聚合函数

ymhld 发表于 2020-5-16 11:04

zyzs010 发表于 2020-5-16 11:03
可以goupby吗,再用聚合函数

想法是直接相加,有没有办法

zyzs010 发表于 2020-5-16 11:16

ymhld 发表于 2020-5-16 11:04
想法是直接相加,有没有办法

我对这也不熟悉,我感觉是可以的,numpy里面两个一维数组直接相加还是一个一维数组。

ymhld 发表于 2020-5-16 11:27

zyzs010 发表于 2020-5-16 11:16
我对这也不熟悉,我感觉是可以的,numpy里面两个一维数组直接相加还是一个一维数组。

不是数组相加,是两行相加,不知道怎么弄

制冷设备 发表于 2020-5-16 11:59

ymhld 发表于 2020-5-16 11:27
不是数组相加,是两行相加,不知道怎么弄

将原矩阵转置,行列互换后进行列相加,应该就可以实现原矩阵的行相加。

ymhld 发表于 2020-5-16 12:11

制冷设备 发表于 2020-5-16 11:59
将原矩阵转置,行列互换后进行列相加,应该就可以实现原矩阵的行相加。

这方法倒是能实现,还有没有直接行相加的办法呢

rsnodame 发表于 2020-5-16 14:47

如果是相隔等距的行做运算(比如算同比),直接用 shift方法就行
https://www.jb51.net/article/150937.htm

不规则的话,那就多用几次shift :lol

ymhld 发表于 2020-5-16 14:58

rsnodame 发表于 2020-5-16 14:47
如果是相隔等距的行做运算(比如算同比),直接用 shift方法就行
https://www.jb51.net/article/150937.ht ...

不规则的,因为是要汇总两行,然后把原来的去掉

Qnly_genius 发表于 2020-5-16 16:52

# 第0行 = 第0行 + 第1行
df.loc = df.loc + df.loc

这样行不?
页: [1] 2 3 4
查看完整版本: python如何实现pandas 中两行相加