python pandas统计制定值数量的问题
df中有一列【账号】,现在我新建一列【总投诉次数】,然后统计本行账号,在【帐号】列出现的次数,即账号重复次数。到这里都没有问题。
确认我希望新建一列【本次投诉次数】,用来统计本行账号到本行出现的次数,这个不知道应该怎么写?请指教,谢谢。
df['总投诉次数'] = df['账号'].apply(
lambda x: len(df == x]))
// 本次投诉次数就是统计到本行该账号出现的次数,不知道怎么写。
df['本次投诉次数'] = df['账号'].apply(
lambda x: len(df == x]))
需求类似EXCEL的这样:
采用遍历的方法可行
for i in range(df.shape):
x = df.loc
df_1 = df
df.loc =len(df_1== x]) 推导式就可以了。
df['本次投诉次数'] = [ df[:x+1]['账号'].to_list().count(df['账号']) for x in range(df.shape)] 本帖最后由 rsnodame 于 2022-1-29 14:18 编辑
官方内置的方法:https://pandas.pydata.org/docs/r ... oupBy.cumcount.html
# sample_df
'''
id
0abc
1edf
2jkl
3dfe
4abc
5abc
6edf
7jkl
8abc
9fcl
'''
# 对全体计数
sample_df['总投诉次数'] = sample_df['id'].map(sample_df['id'].value_counts())
# 累积计数
sample_df['本次投诉次数'] = (sample_df.groupby('id').cumcount()) + 1
简单粗暴,没技术含量,供参考:
df['辅助列'] = 1
df['本次投诉次数'] = df['辅助列'].groupby(df['账号']).cumsum()
页:
[1]