pandas 从满足条件的值和索引创建字符串文本

9udxz4iz  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(155)

我有以下的数据集:

# creating dataset
dataset = pd.DataFrame()
dataset['name'] = ['Alex', 'Alex', 'Alex','Alex','Alex',
                   'Marie', 'Marie', 'Marie','Marie','Marie',
                   'Luke', 'Luke', 'Luke','Luke','Luke']
dataset['sales'] = [690,451,478,524,750,452,784,523,451,125,854,745,856,900,105]

dataset.info()
dataset.shape

我想创建并打印一个字符串,让我知道平均销售额超过500个单位的销售代表,为了实现这一点,我首先对数据进行分组,并按名称计算平均值,如下所示:

result_grouped=dataset.groupby(['name']).aggregate({'sales': 'mean'})

如果我可以使用以下代码来筛选目标销售代表

print(list(result_grouped.index[(result_grouped['sales']>500)]))
result_grouped[(result_grouped['sales']>500)]

其给出:

['Alex', 'Luke']
        sales
name    
Alex    578.6
Luke    692.0

但我想要的输出应该是这样的:
可打印字符串,格式为:
“目标指标中的代表包括:name1mean1之间、name2mean2之间、......、namenmeann之间“

对于此示例,我输出将是:

“目标指标中的代表Alex为578.6,Luke为692.0”
我对Python很陌生,处于精神崩溃的边缘,我知道这在代码类型中并不太难,但伙计们,我来自R环境,Python对我来说似乎很难,我真的很感谢你们的帮助,非常感谢你们的帮助

nszi6y05

nszi6y051#

你可以把panda函数链接起来,然后用一个list comp把元组列表解压缩成一个句子。

result_grouped = (
    dataset
    .groupby(['name'])
    .aggregate({'sales': 'mean'})
    .query('sales.gt(500)')
    .reset_index()
    .to_records(index=False)
    .tolist()
)

print(f"The reps in the target metrics are {', '.join([f'{x[0]} with {x[1]}' for x in result_grouped])}")

输出量:

The reps in the target metrics are Alex with 578.6, Luke with 692.0
py49o6xq

py49o6xq2#

您可以用途:

result_grouped=dataset.groupby(['name']).aggregate({'sales': 'mean'}).reset_index()
result_grouped=result_grouped[(result_grouped['sales']>500)]

result_grouped['text']=result_grouped['name'] + ' with ' + result_grouped['sales'].astype(str)
listt=', '.join(result_grouped['text'].to_list())
final="The reps in the target metrics are {}".format(listt)

print(final)
'''
The reps in the target metrics are Alex with 578.6, Luke with 692.0
'''

相关问题