首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅有效地组合数据帧中的某些行

仅有效地组合数据帧中的某些行
EN

Stack Overflow用户
提问于 2018-06-03 00:07:26
回答 1查看 27关注 0票数 0

因此,我有一个dataframe,其中包含具有相同id和活动的后续行中某些活动的开始和结束时间。每隔一段时间,就会有一行没有结尾的行我想要删除evtl。(本例中id为3&5)。成对的行( id/act对: 1/10、2/10和1/10在不同的时间)可以合并,即可以删除第二行。我可以简单地通过移动一列来添加结束时间,但是我很难在不迭代整个数据帧的情况下删除不必要的行。

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame([[1,10,20],[1,10,25],[2,10,40],[2,10,41],[3,10,42],[1,10,45],[1,10,45],[5,10,50]], columns=['id','act','time'])
df["time 2"]=df["time"].shift(-1)
EN

回答 1

Stack Overflow用户

发布于 2018-06-03 00:45:01

非常感谢你的快速回复,但实际上我自己用一个非常简单的解决方案解决了这个问题:

代码语言:javascript
复制
df = pd.DataFrame([[1,10,20],[1,10,25],[2,10,40],[2,10,41],[3,10,42],[1,10,45],[1,10,45],[5,10,50]], columns=['id','act','time'])

id  act  time
0   1   10    20
1   1   10    25
2   2   10    40
3   2   10    41
4   3   10    42
5   1   10    45
6   1   10    45
7   5   10    50
df["end"]=df["time"].shift(-1)
df["id 2"]=df["id"].shift(-1)
df["act 2"]=df["act"].shift(-1)
df.drop(df.index[len(df)-1],inplace=True)

   id  act  time  time 2  id 2  act 2
0   1   10    20    25.0   1.0   10.0
1   1   10    25    40.0   2.0   10.0
2   2   10    40    41.0   2.0   10.0
3   2   10    41    42.0   3.0   10.0
4   3   10    42    45.0   1.0   10.0
5   1   10    45    45.0   1.0   10.0
6   1   10    45    50.0   5.0   10.0

df=df.loc[(df["id"]==df["id 2"])== (df["act"]==df["act 2"])]
df.drop(columns=["id 2","act 2"],axis=0,inplace=True)

   id  act  time   end
0   1   10    20  25.0
2   2   10    40  41.0
5   1   10    45  45.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50658756

复制
相关文章

相似问题

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