这里是Python的新手,我想在数据框中创建一列,以根据其值对列进行排名。特别是在这种情况下,我有一个余额字段,并且我想将最高余额列为1,将第二最高余额列为2,依此类推。但是,当我尝试使用最小或密集或其他选项的排名功能时,它不会根据余额进行排名...我的尝试如下:
import pandas as pd
# Create a test df
df = pd.DataFrame({'Name': ['Bob','Carl','Doug','Edith','Ford','George']
, 'Bank Amt': ['17','123','144','2','63','25']
, 'Loan Amt': ['147','1523','1144','542','5463','2135']
})
df['Bank Amt Rank'] = df['Bank Amt'].rank(method='min', ascending=True)
df
输出:
任何帮助将不胜感激。
答案 0 :(得分:2)
您的数据为string
类型,您需要转换为数字类型:
df['Bank Amt'].astype(float).rank()
输出:
0 2.0
1 5.0
2 6.0
3 1.0
4 4.0
5 3.0
Name: Bank Amt, dtype: float64