我陷入了两种无法解释自己的情况。第一件事是关于应用vs变换函数。据我所知,apply在整个数据帧上工作,而transform在每一行上工作,因此比apply慢。这是我的数据框,
size id
40/6 2479
41/7 2479
42/8 2479
43/9 2479
44/10 2479
45/11 2479
46/12 2479
现在,当我申请时
df.groupby('id')['size'].apply(lambda col: ', '.join(col))
它返回
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
但如果我改变,
df.groupby('id')['size'].transform(lambda col: ', '.join(col))
,我明白了
0 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
1 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
2 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
3 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
4 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
5 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
6 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
我想让它与应用程序一起工作,因为我有300万行,速度是重要因素。
第二期
当我的尺寸数据有空单元格时,即
size id
2479
41/7 2479
2479
43/9 2479
44/10 2479
45/11 2479
46/12 2479
使用apply或transform,我得到这个错误,
TypeError: sequence item 0: expected string, float found
我理解这是由于空值。我的问题是,我如何克服这一点?我需要可用值的并集并忽略null。