勤勉敦敏 2023-11-14 09:58 采纳率: 82.8%
浏览 3
已结题

python取值的问题

有个dataframe A列是随机的从100到200逐渐增大的数字,B列是50到100的随机数


   A   B
100   55
100   65
102   51
105   85
.......
200  61
200  56

把数值100-200分成30份,100 占比最小,200占比最大,中间占比线性过渡,然后按照A列每个数的占比取B列从大到小排列的值

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-14 13:29
    关注

    【以下回答由 GPT 生成】

    解决方案:

    以下是实现该需求的步骤:

    1. 导入必要的库
    2. 创建一个随机的 DataFrame
    3. 将 A 列按照指定区间进行分组
    4. 对每个分组计算占比
    5. 将 B 列按照 A 列分组结果进行排序
    6. 打印结果

    1. 导入必要的库

    import pandas as pd
    import numpy as np
    

    2. 创建一个随机的 DataFrame

    np.random.seed(0)
    df = pd.DataFrame({
        'A': np.random.randint(100, 201, size=1000),
        'B': np.random.randint(50, 101, size=1000)
    })
    

    3. 将 A 列按照指定区间进行分组

    bin_size = 30
    df['A_bin'] = pd.cut(df['A'], bins=bin_size, labels=False, retbins=False)
    

    4. 对每个分组计算占比

    bin_counts = df['A_bin'].value_counts()
    df['A_bin_pct'] = df['A_bin'].map(lambda x: bin_counts[x] / len(df))
    

    5. 将 B 列按照 A 列分组结果进行排序

    df_sorted = df.sort_values(['A_bin', 'B'], ascending=[True, False])
    

    6. 打印结果

    print(df_sorted)
    

    以上步骤将实现该需求,输出排序后的 DataFrame。

    请注意,由于每次运行的随机数不同,可能会得到不同的结果。代码中使用了随机数种子 np.random.seed(0) 来保证结果可复现。

    如果没有解决您的问题或者您有其他问题,请告诉我。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月14日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改