Я новичок в питоне.вот вопрос, который у меня есть, что действительно странно для меня.
Простой кадр данных выглядит следующим образом:
a1=pd.DataFrame({'Hash':[1,1,2,2,2,3,4,4],
'Card':[1,1,2,2,3,3,4,4]})
Мне нужно сгруппировать a1 по хэшу, подсчитать, сколько строк в каждомгруппу, затем добавьте один столбец в a1, чтобы указать номера строк.Итак, я хочу использовать groupby + transform.
Когда я использую:
a1['CustomerCount']=a1.groupby(['Hash']).transform(lambda x: x.shape[0])
Результат правильный:
Card Hash CustomerCount
0 1 1 2
1 1 1 2
2 2 2 3
3 2 2 3
4 3 2 3
5 3 3 1
6 4 4 2
7 4 4 2
Но когда я использую:
a1.loc[:,'CustomerCount']=a1.groupby(['Hash']).transform(lambda x: x.shape[0])
Результат:
Card Hash CustomerCount
0 1 1 NaN
1 1 1 NaN
2 2 2 NaN
3 2 2 NaN
4 3 2 NaN
5 3 3 NaN
6 4 4 NaN
7 4 4 NaN
Итак, почему это происходит?
Насколько я знаю, loc и iloc (как a1.loc [:,'CustomerCount']) лучше, чем ничего (например, a1 ['CustomerCount']), поэтому обычно рекомендуется использовать loc и iloc.Но почему это происходит?
Кроме того, я много раз пробовал loc и iloc для генерации нового столбца в одном фрейме данных.Они обычно работают.Так это как-то связано с groupby + transform?