我是靠谱客的博主 无语大象,最近开发中收集的这篇文章主要介绍Python pandas 随机生成20个整数且两两相加不相等,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题背景:
现有一份EXCEL表格如下,左侧表格中的活动名称需以右侧表格为基础表格进行匹配。匹配条件为:左侧日期位于右侧开始时间结束时间范围内,且左侧商品名称与右侧商品名称一致。

在这里插入图片描述
由于出现了时间范围判断,这是我想到了使用EXCEL的lookup()函数来进行多条件匹配。这里的lookup()匹配的是最后一次满足条件的值,但是实际的需求是多值匹配,即如果右侧映射表中有多项满足匹配条件,左侧匹配结果应有多项,且lookup()函数运行较慢,如果数据量大的话,非常耗时间。
在这里插入图片描述
目前的解决方法是:
第一步:计算出左侧表格每一行记录在右侧表格中能够匹配成功的次数。
在这里插入图片描述
第二步:将右侧表格中的活动名称数值化(标准化),在左侧表格中使用sumifs()计算满足条件的活动名称标准值之和。
在这里插入图片描述
通过计算出来的和,再进一步分解出和所对应的两个加数(为什么是两个,而不是其他,因为在第一步中计算出来的最大值为2),再进一步通过加数反向匹配该数值对应的活动名称。
这里有一个必须要注意的一点就是,我们必须确保活动名称对应值两两相加和不相等,只有这样,才可以将sumifs()计算出来的和分解到两个加数,进而反向匹配成活动名称。

好了,终于讲到了标题部分,如何生成多个两两相加不相等的随机数值呢?我们以生成20个整数且两两相加不相等为例,生成脚本如下:

#生成20个值,两两相加不等
import random
import pandas

sum_obj=pd.DataFrame(columns=["和","值1","值2"],index=[0,1,2])
sum_obj.loc[0,"和"]=3
sum_obj.loc[0,"值1"]=2
sum_obj.loc[0,"值2"]=1
sum_obj.loc[1,"和"]=3
sum_obj.loc[1,"值1"]=2
sum_obj.loc[1,"值2"]=1
sum_obj.loc[2,"和"]=3
sum_obj.loc[2,"值1"]=2
sum_obj.loc[2,"值2"]=1
#只有21个整数两两相加的和均不相等的时候,才跳出当前循环
while len(sum_obj["和"])!=len(sum_obj["和"].drop_duplicates()):
    sum_obj=pd.DataFrame(columns=["和","值1","值2"])
    random_list=random.sample(range(1,10000),20)#随机生成1-100范围内的20个整数
    for i in np.arange(0,20):
        for j in np.arange(i,20):
            sum_value=random_list[i]+random_list[j]
            temp=[sum_value,random_list[i],random_list[j]]
            temp=pd.DataFrame(temp)
            temp=temp.T
            temp.rename(columns={0:"和",1:"值1",2:"值2"},inplace=True)
            sum_obj=sum_obj.append(temp)

最后

以上就是无语大象为你收集整理的Python pandas 随机生成20个整数且两两相加不相等的全部内容,希望文章能够帮你解决Python pandas 随机生成20个整数且两两相加不相等所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部