Python 如何在条件下应用公式生成新列并应用两种排序类型?
输入:Python 如何在条件下应用公式生成新列并应用两种排序类型?,python,pandas,Python,Pandas,输入: 我需要应用这个公式 如果汽油价格>80:汽油价格=80其他:数据框中给出的汽油价格 新价格=现有票价+汽油价格+2*加薪 2.排序正确 如果两个分数有相同的值,那么给他们相同的排名 输出 import pandas as pd data = [['abc1',55,98,100],['abc2',56,97,101],['abc3',13,18,55],['abc4',56,79,100]] df = pd.DataFrame(data,columns=['Bus','Existing_
import pandas as pd
data = [['abc1',55,98,100],['abc2',56,97,101],['abc3',13,18,55],['abc4',56,79,100]]
df = pd.DataFrame(data,columns=['Bus','Existing_Fare','Petrol_Price','Salary_Hike'])
IIUC:
IIUC:
到目前为止你有没有尝试过什么?为什么新的价格在指数2
13
?我用你的公式得到了141
。是的,这是正确的。什么是Rank\u Order
?@sobek只是简单地按递增顺序给他们数字?到目前为止你有没有尝试过什么?为什么指数2的新价格是13
?我用你的公式得到了141
是的,这是正确的。我会编辑什么是Rank\u Order
?@sobek只需按递增顺序给他们数字就行了?对新的\u priceRank\u duplicate进行排序我不知道你的意思。您的Rank\u顺序
只是[1,2,3,4]
,它看起来一点也不像任何事物的排名。此外,我还展示了可以使用rank
和参数method='dense'
来调整复制。你没有解释什么是Rank\u Order
,你的评论只是简单地说“Rank\u Duplicates”肯定没有帮助问题。我认为你的Rank\u Duplicates
是相反的,除了你的帖子与OP中的信息一样好。对新的排名价格Rank\u Duplicates我不知道你的意思。您的Rank\u顺序
只是[1,2,3,4]
,它看起来一点也不像任何事物的排名。此外,我还展示了可以使用rank
和参数method='dense'
来调整复制。你还没有解释什么是Rank\u Order
,你的评论只是简单地说“Rank\u Duplicates”当然也帮不了什么忙。我认为你的Rank\u Duplicates
是相反的,除了你的帖子与OP的信息一样好之外。
Bus New_Price Rank_Order Rank_duplicates
0 abc1 335 1 2
1 abc2 338 2 1
2 abc3 141 3 3
3 abc4 335 4 2
df.assign(
Petrol_Price=df.Petrol_Price.clip(0, 80)
).eval(
'New_Price=Existing_Fare + Petrol_Price + 2 * Salary_Hike'
).assign(
Rank_Duplicates=lambda d: d.New_Price.rank(method='dense', ascending=False)
)
Bus Existing_Fare Petrol_Price Salary_Hike New_Price Rank_Duplicates
0 abc1 55 80 100 335 2.0
1 abc2 56 80 101 338 1.0
2 abc3 13 18 55 141 3.0
3 abc4 56 79 100 335 2.0