首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想查看Panda Dataframe,如果testsubject( "ID")在某一天给出了信息(Datapoint)

我想查看Panda Dataframe,如果testsubject( "ID")在某一天给出了信息(Datapoint)
EN

Stack Overflow用户
提问于 2022-11-11 08:17:31
回答 1查看 20关注 0票数 0

我对Python和Pandas相当陌生,所以我在想,也许这是显而易见的,但我就是不明白。

我有一个数据集,其中包含“ID”(随机数)、“日期”和当天的“活动”数据点。

因此,如果我有5个(或X个) ID,ID : 1,2,3,4,5,然后每个ID都有日期,比如30天。(ID重复30次),

所以ID 1的日期是2018-11-1到2018-11-30,2,3等等。最后,我们有一个名为"Activity“的列,它的值可以是0,也可以是X>0。

前3排为1,2018-11-1,70,1,2018-11-2,45,1,2018-11-3,0

换句话说,记录活动的天数是随机的。

计算每个ID发生的次数(活动记录的天数)的最简单的方法是什么,甚至是哪个id的ocurrence最多。

我认为嵌套for循环是可行的方法,但后来我意识到它并不是那么直接,因为我还需要在每次迭代中检查ID是否相同,然后在id更改时重新设置id。因此,一个is没有重复值的列表可能会感到有点复杂,因为这是一个次要的检查问题。

我也知道这可能不是迭代pd.dataframe的正确方法,但是您知道我在想什么

代码语言:javascript
复制
IDs = [1,2,3,4,5]
i = 1
occ = [0,0,0,0,0]
for ID in IDs:
    for row in dataframe:
         if i == row[0]:
              if row[2] > 0:
                  occ[i-1] += 1
         else:
             i = i + 1
             if i == 6:
                  break

`

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 08:43:45

我使用以下方法创建了一个虚拟数据文件:

代码语言:javascript
复制
df = pd.DataFrame()
ID = [1,2,3,4,5]
Dates = ['01/05/2022', '02/03/2022', '12/03/2022', '02/03/2022', '02/04/2022']
Activity = [0, 1, 4, 5, 1]
df['ID'], df['Date'], df['Activity'] = ID, Dates, Activity

给我这个数据:

代码语言:javascript
复制
ID        Date  Activity
0   1  01/05/2022         0
1   2  02/03/2022         1
2   3  12/03/2022         4
3   4  02/03/2022         5
4   5  02/04/2022         1

现在,使用下面的代码,我能够找到活动的“最大”级别( ID为4的用户),并接受第一个索引(索引0)来给出ID号:

代码语言:javascript
复制
df.loc[df['Activity'].idxmax()][0]

我得到了ID: 4,正如我所希望的那样。没有发生的事。

你也可以这样做:

代码语言:javascript
复制
print(df[['ID']][df.Activity == df.Activity.max()])

来达到同样的目的。

一般来说,对于熊猫数据,大多数解决方案不需要循环和迭代,因此它是一个如此快速和高效的工具。

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

https://stackoverflow.com/questions/74399712

复制
相关文章

相似问题

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