首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对数据帧中两个连续位置的信息求和

如何对数据帧中两个连续位置的信息求和
EN

Stack Overflow用户
提问于 2016-02-03 19:51:26
回答 3查看 1.2K关注 0票数 0

我有一个位置为k,y的pandas数据帧。

代码语言:javascript
运行
复制
pos k y
123 0.7 0.5
124 0.4 0.1
125 0.3 0.2
126 0.4 0.1
128 0.3 0.6
130 0.4 0.9
131 0.3 0.2

我想把k和y处的信息求和如下

代码语言:javascript
运行
复制
123 1.1 0.6
125 0.7 0.3
128 0.3 0.6
130 0.7 1.1

因此,输出只有第一个位置和值的总和,第一个和紧随其后的连续数字。

我试着按熊猫分组

代码语言:javascript
运行
复制
for k,g in df.groupby(df['pos'] - np.arange(df.shape[0])):
   u=g.ix[0:,2:].sum()

但它的分组都是我不想要的连续数字

另外,我需要更快的东西,因为我的数据文件中有2611774行

EN

回答 3

Stack Overflow用户

发布于 2016-02-03 20:35:16

希望这能解决你的问题

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame( columns=['pos','k','y'])
cf = pd.DataFrame( columns=['pos','k','y'])
df['pos']=123, 124,125,126,128,130,131
df['k']=.7,.4,.3,.4,.3,.4,.3
df['y']=.5,.1,.2,.1,.6,.9,.2
row=0
while 1:
    if row+1<len(df):
        if(df.loc[row]['pos']+1==df.loc[row+1]['pos']):
            cf.loc[row]= df.loc[row]+df.loc[row+1]
            cf.loc[row]['pos']=df.loc[row]['pos']
            row=row+2
        else:
            cf.loc[row]= df.loc[row]
            row=row+1
    else:
        break
print cf
票数 1
EN

Stack Overflow用户

发布于 2016-02-03 21:30:57

我以前没有使用过pandas,但如果你有机会将数据作为列表使用,那么这应该是可行的。

代码语言:javascript
运行
复制
def SumNext(L):
  N = xrange(len(L)-1)
  Output = [L[i]+L[i+1] for i in N]
  return Output

如果你输入一个列表,这个函数会给你一个连续元素的总和。

A=1,1,2,3,5,8,13 SumNext(A) => 2,3,5,8,13

然后你只需要把值读到你喜欢的任何地方,当你得到很多元素时,在列表中做事情要快得多(而不是while循环)。

然后,您只需要弄清楚将输出传递回数据帧的实现。

票数 0
EN

Stack Overflow用户

发布于 2018-04-23 08:47:50

也许这比循环更快,但它不会像我想的那样将位置123和124相加,然后是130和131,因为它将奇数位置与其连续的129和130,131和132相加。

代码语言:javascript
运行
复制
df = df.set_index('pos')
df_odd = df.loc[df.index.values % 2 == 1]
df_even = df.loc[df.index.values % 2 == 0]
df_even = df_even.set_index(df_even.index.values - 1)
df_odd.add(df_even, fill_value = 0)

结果:

代码语言:javascript
运行
复制
pos k   y
123 1.1 0.6
125 0.7 0.3
127 0.3 0.6
129 0.4 0.9
131 0.3 0.2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35176293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档