我有一个包含列源,目标和成本的数据集。有x个起点和y个目的地。每个原点都以相应的成本映射到y目的地。
我的目标是创建一个新列,根据预算花费的数量显示每个来源可以到达的目的地数量。我可以轻松地为每个原点做到这一点,但这需要永远经历x个不同的起源。
有没有办法过滤这个庞大的数据集定义一个函数来得到每个来源的目的地的正确结果?
答案 0 :(得分:2)
我对这个问题的理解是,您希望使用给定的旅行预算来确定每个来源可到达的地点数量。所以,有点像使用相同价格可以达到的其他目的地的数量。
我们可以通过按来源对数据进行分组,然后对预算进行排名来实现这一点 - 使用method = 'max'
我们在关系中获取最高排名:
x.groupby('OriginID').apply(lambda x: x.Budget.rank(method = 'max'))
答案 1 :(得分:1)
好的,我仔细阅读了这个问题,这应该能满足你的需求。
if string.match(line,"{@BLOCK%|1%%1101_swp%|00..{@A-JUM%|0%|.............{@LIM2") then
string.gsub(line,"{@A-JUM%|0%|.............{@LIM2", "{@A-JUM%|0%|"..ff[#lines].."{@LIM2")
答案:
import pandas as pd
df = pd.read_csv('data.csv')
def get_cumulative_destinations(row):
return len(df.loc[(df['OriginID'] == row['OriginID']) & (df['Budget'] <= row['Budget'])].Destination)
df['Cumulative destination'] = df.apply(get_cumulative_destinations, axis=1)