我对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的正确方法,但是您知道我在想什么
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`
发布于 2022-11-11 08:43:45
我使用以下方法创建了一个虚拟数据文件:
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给我这个数据:
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号:
df.loc[df['Activity'].idxmax()][0]我得到了ID: 4,正如我所希望的那样。没有发生的事。
你也可以这样做:
print(df[['ID']][df.Activity == df.Activity.max()])来达到同样的目的。
一般来说,对于熊猫数据,大多数解决方案不需要循环和迭代,因此它是一个如此快速和高效的工具。
https://stackoverflow.com/questions/74399712
复制相似问题