панды групповой - пользовательская функция

Уведомление о безопасности. Это решение не должно использоваться в ситуациях, когда качество вашей случайности может повлиять на безопасность приложения. В частности, rand() и uniqid() не являются криптографически защищенными генераторами случайных чисел . См. ответ Скотта для безопасной альтернативы.

Если вам не нужно, чтобы он был абсолютно уникальным с течением времени:

md5(uniqid(rand(), true))

В противном случае (если вы уже определили уникальный логин для своего пользователя):

md5(uniqid($your_user_login, true))
3
задан yatu 27 February 2019 в 15:32
поделиться

3 ответа

Благодаря @piRSquared, @Alollz и @ anky_91:

Вы можете использовать без установки индекса и сброса индекса:

d = {'col1': ["A", "A", "A", "B", "B", "B", "C", "C","C"], 'col2': [1,2,3,4,5,6, np.nan, np.nan, np.nan]}

df = pd.DataFrame(data=d)

df.groupby("col1", as_index=False).sum(min_count=1)

Вывод:

  col1  col2
0    A   6.0
1    B  15.0
2    C   NaN
0
ответ дан Scott Boston 27 February 2019 в 15:32
поделиться

Используйте это:

df.groupby('col1').apply(pd.DataFrame.sum,skipna=False).reset_index(drop=True)
#Or --> df.groupby('col1',as_index=False).apply(pd.DataFrame.sum,skipna=False)

Без apply() благодаря @piRSquared:

df.set_index('col1').sum(level=0, min_count=1).reset_index()

благодаря @Alollz: если вы хотите вернуть сумму групп, содержащих NaN, а не просто NaNs

df.set_index('col1').sum(level=0,min_count=1).reset_index()

Выход

  col1  col2
0  AAA   6.0
1  BBB  15.0
2  CCC   NaN
0
ответ дан anky_91 27 February 2019 в 15:32
поделиться

для вызова суммы есть параметр skipna = False.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sum.html

эта ссылка должна предоставить необходимую документацию и я ожидаю, что это решит вашу проблему.

0
ответ дан bravosierra99 27 February 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: