【发布时间】:2020-06-08 13:45:17
【问题描述】:
我有一个数据框数据
groupId service local
0 1 s1 l1
1 1 s1 l1
2 1 s2 l2
3 1 s3 l3
4 2 s2 l2
5 2 s3 l3
6 3 s1 l1
7 3 s2 l2
我有一个数据框问题
q1 q2 howManyGroups
0 s1 l1 0
1 s1 s2 0
2 s2 l2 0
3 s3 l3 0
4 s3 l1 0
我想根据 data 中出现的组数来计算 question 行的出现次数:
q1 q2 howManyGroups
0 s1 l1 2
1 s1 s2 2
2 s2 l2 3
3 s3 l3 2
4 s3 l1 1
我正在使用这段代码,但它真的很慢:
for i,g in data.groupby('groupId'):
for j,r in question.iterrows():
if set(r[['q1','q2']].values).issubset(set( g.drop('groupId', axis=1).values.ravel())):
question.loc[j,'howManyGroups'] += 1
编辑:我的问题数据框有时可能比q1 and q2 有更多/更少的列。有时它只有q1,有时它只有q1, q2, q3...
【问题讨论】:
-
输出没有意义,样本
s3,l1中没有组合data。 -
在第 1 组我们有
s1 l1 s1 l1 s2 l2 s3 l3所以第 1 组的值是s3,l1,即使它们不在同一行 @quang-hoang -
@LuizFernandoPuttowSouthier 您的数据框的实际大小是多少?
-
data大约有 100000 行,问题在10000行 @Ben 附近。 T