Python 熊猫添加一列数字来表示最近的月份
一个简单的数据框,我想添加一列数字,以指示该月的最近程度,例如,最近一个月的“得分”最高,最远的一个月的“得分”最低 下面笨拙的行有助于简单的数据帧,但不能用于大型数据帧:Python 熊猫添加一列数字来表示最近的月份,python,pandas,dataframe,Python,Pandas,Dataframe,一个简单的数据框,我想添加一列数字,以指示该月的最近程度,例如,最近一个月的“得分”最高,最远的一个月的“得分”最低 下面笨拙的行有助于简单的数据帧,但不能用于大型数据帧: import pandas as pd from io import StringIO csvfile = StringIO(""" Town,Department,Staff,Month,Project,Score East,Produce,Ethan,1987-08,A814,27 Eas
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个月或更长时间的大型数据帧,行中的月份是重复的,编写它的好方法是什么
谢谢。如果可能,请使用:
这似乎有效,不需要一个月的分数
df['Month'] = pd.to_datetime(df['Month'])
df.sort_values('Month', ascending=False )
或者如果你真的需要分数
Score = pd.to_datetime(df['Month'])
df['Score'] = Score
df.sort_values('Score', ascending=False)
Score = pd.to_datetime(df['Month'])
df['Score'] = Score
df.sort_values('Score', ascending=False)