首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按dataset中的相应值对单个Pandas数据基值进行划分

按dataset中的相应值对单个Pandas数据基值进行划分
EN

Stack Overflow用户
提问于 2021-08-24 16:30:25
回答 2查看 69关注 0票数 0

我正在研究一种CVRP,我已经有了一份车队清单,每个车队都是由一种相同的车辆类型组成的,以及每个车队应该拥有的货物数量。相应的dataframe看起来如下:

代码语言:javascript
复制
Vehicle               Quantity of Goods
v1                     8.0
v2                    12.0
v3                    16.0
v4                    12.0

由于每支车队都是由一个单一类型的车辆组成的,我想找出服务这个数量所需的车辆数目。也就是说,我想将车队拥有的货物数量除以每辆车能容纳的相应数量,使我确切地知道有多少辆车在活动。容量值位于我一直用于向模型的其他部分提供数据的同一个.json文件中,在索引数据“transportation_data”下,关联的字典如下:

代码语言:javascript
复制
"vehicle_capacity": {
      "v1": 8,
      "v2": 6,
      "v3": 4,
      "v4": 3
    }

例如,我想将v1的数量除以8,这将使我使用1辆车,或v2的数量除以6,留下2辆车。到目前为止,我尝试过的一件事是

代码语言:javascript
复制
df = df.apply(lambda x: x.Quantity_Employed / data["transportation_data"]["vehicle_capacity"][x], axis =1)

然而,当我尝试这样做的时候,我会收到一个错误,上面写的是不可理解的类型:“系列”。我也试过

代码语言:javascript
复制
df = df.apply(lambda x: x.Quantity_Employed / data["transportation_data"]["vehicle_capacity"][x.Vehicles], axis =1)

但是我继续收到一个错误,这个是'Series‘对象,没有属性'Vehicle.’‘。我已经阅读了一些文档,也没有发现任何类似的东西。任何帮助都是感激的,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-24 17:03:26

我认为问题在于您访问数据的方式,特别是使用"x.Quantity_Employed“。这是可行的,所以问题可能在lambda函数中:

代码语言:javascript
复制
import pandas as pd

capacity = {'v1' : 8, 'v2' : 12, 'v3' : 16, 'v4' : 12}
df = pd.DataFrame({'vehicle' : ['v1', 'v2', 'v3', 'v4'], 'quantity' : [8, 6, 4, 3]})

f = lambda x: capacity[x['vehicle']] / x['quantity'] 

df.loc[:, 'result'] = df.apply(f, axis=1)
票数 1
EN

Stack Overflow用户

发布于 2021-08-24 17:04:53

取决于你的数据。也许..。

代码语言:javascript
复制
# frame
df = pd.DataFrame({'Vehicle': {0: 'v1', 1: 'v2', 2: 'v3', 3: 'v4'},
 'Quantity of Goods': {0: 8.0, 1: 12.0, 2: 16.0, 3: 12.0}})

  Vehicle  Quantity of Goods
0      v1                8.0
1      v2               12.0
2      v3               16.0
3      v4               12.0

然后..。

代码语言:javascript
复制
# dictionary of capacity
vehicle_capacity = {
      "v1": 8,
      "v2": 6,
      "v3": 4,
      "v4": 3
    }

df['needed'] = df['Quantity of Goods'].div(df['Vehicle'].map(vehicle_capacity))

print(df)

  Vehicle  Quantity of Goods  needed
0      v1                8.0     1.0
1      v2               12.0     2.0
2      v3               16.0     4.0
3      v4               12.0     4.0

附加信息:

聚集起来试着:

代码语言:javascript
复制
import numpy as np

df['needed'] = df['Quantity of Goods'].div(df['Vehicle'].map(vehicle_capacity)).apply(np.ceil)

print(df)

  Vehicle  Quantity of Goods  needed
0      v1                8.1     2.0
1      v2               12.0     2.0
2      v3               16.0     4.0
3      v4               12.0     4.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68910952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档