一个简单的 Dataframe ,我想添加一列数字来指示这个月有多近,最近的一个月有最高的“分数”,最远的有最低的。
下面笨拙的行有助于简单的 Dataframe ,但不能与大的:
import pandas as pd
from io import StringIO
csvfile = StringIO("""
Town,Department,Staff,Month,Project,Score
East,Produce,Ethan,1987-08,A814,27
East,Produce,Ethan,1987-09,A848,27
East,Produce,Ethan,1987-10,A736,29
East,Meat,Harry,1987-07,A813,26""")
df = pd.read_csv(csvfile, sep = ',', engine='python')
def condition(s):
if (s['Month'] == '1987-10'):
return 4
if (s['Month'] == '1987-09'):
return 3
if (s['Month'] == '1987-08'):
return 2
if (s['Month'] == '1987-07'):
return 1
else:
return ''
df["Month score"] = df.apply(condition, axis=1)
print (df)
对于另一个包含24个月或更长时间的大型 Dataframe ,行中的月份是重复的,那么编写它的好方法是什么?
2条答案
按热度按时间zed5wv101#
如果可能,请使用
Series.rank
:yhxst69z2#
这似乎工作,不需要一个月的分数
如果你真的需要一个分数