Python 为什么pandas中的groupby.transform()函数在使用函数'len'时要慢得多?

Python 为什么pandas中的groupby.transform()函数在使用函数'len'时要慢得多?,python,pandas,dataframe,Python,Pandas,Dataframe,当我看到相关问题时: 我尝试了unutb的解决方案,即: [102]中的df=pd.DataFrame({'Color':'Red-Red-Blue'.split(),'Value':[10015050]}) 请注意,transform('count')忽略NAN。如果要计算N,请使用transform(len) 然而,问题是当我使用变换(len)时,它比变换('count'),变换('size')甚至变换(sum)花费的时间要多得多。transform(len)的运行时间为7分钟20秒,其他

当我看到相关问题时:

我尝试了unutb的解决方案,即:

[102]中的
df=pd.DataFrame({'Color':'Red-Red-Blue'.split(),'Value':[10015050]})

请注意,
transform('count')
忽略NAN。如果要计算N,请使用
transform(len)

然而,问题是当我使用
变换(len)
时,它比
变换('count')
变换('size')
甚至
变换(sum)
花费的时间要多得多。
transform(len)
的运行时间为7分钟20秒,其他的运行时间为5秒。 有关资料如下:


%time  df_count1 = df.groupby(['f_item_id','f_session_id'])['f_item_id'].transform('size')
CPU times: user 5.22 s, sys: 25 µs, total: 5.22 s
Wall time: 5.22 s

%time  df_count1 = df.groupby(['f_item_id','f_session_id'])['f_item_id'].transform(len)
CPU times: user 7min 17s, sys: 3.09 s, total: 7min 20s
Wall time: 7min 20s

%time  df_count1 = df.groupby(['f_item_id','f_session_id'])['f_item_id'].transform(sum)
CPU times: user 5.45 s, sys: 2 ms, total: 5.46 s
Wall time: 5.45 s


%time  df_count1 = df.groupby(['f_item_id','f_session_id'])['f_item_id'].transform('size')
CPU times: user 5.22 s, sys: 25 µs, total: 5.22 s
Wall time: 5.22 s

%time  df_count1 = df.groupby(['f_item_id','f_session_id'])['f_item_id'].transform(len)
CPU times: user 7min 17s, sys: 3.09 s, total: 7min 20s
Wall time: 7min 20s

%time  df_count1 = df.groupby(['f_item_id','f_session_id'])['f_item_id'].transform(sum)
CPU times: user 5.45 s, sys: 2 ms, total: 5.46 s
Wall time: 5.45 s