【问题标题】:Manipulate row values based on lists根据列表操作行值
【发布时间】:2021-07-22 05:41:23
【问题描述】:

我实际上有一个问题,我不知道如何解决它。

我有两个列表,它们的长度总是相同的:

max_values = [333,30,10]
min_values = [30,10,0]

列表的每个索引代表一个最大值和最小值范围内的簇号,所以:

Index/Cluster 0: 0-10
Index/Cluster 1: 10-30
Index/Cluster 2: 30-333

此外,我有一个数据框如下:

Dataframe

在 df 中,我有一个名为“AVG_MPH_AREA”的列 应该检查该值在哪个集群范围之间。之后“Cluster”列应设置为列表的正确索引。应该删除旧值。

在这种情况下,它是一个包含 3 个集群的列表,但它也可能或多或少......

知道如何切换它或使用哪些功能吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    想出了一个可以完成任务的小函数

    max_values = [333,30,10]
    min_values = [30,10,0]
    

    制作一个包含Cluster_num 作为键和(min_values, max_values) 作为值的字典。

    def temp_func(x):
     
     # constructing the dict inside to apply this func to AVG_MPH_AREA column in dataframe
      dt = {}
      cluster_list=list(zip(min_values, max_values))
      for i in range(len(cluster_list)):
        dt[i] = cluster_list[i]
      for key, value in dt.items():
        x = int(round(x))
        if x in list(range(value[0], value[1])):
           return key
        else:
           continue
    

    现在将函数应用到AVG_MPH_AREA

     df["Cluster"] = df["AVG_MPH_AREA"].apply(temp_func)
    
      Output:
    
          AVG_MPH_AREA  cluster
      0      10.770      1
      1      10.770      1
      2      10.780      1
      3      5.780       2
      4      24.960      1
      5      267.865     0 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-01
      • 2021-06-07
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多