我有一个日期为date的变量。 首先,我将其转换为日期时间:
private static void InvokeFunctionDynamically<T>(T data)
{
//1. Define the delegate
Func<string, bool, T> genericFunction = (name, isEnabled) =>
{
if(isEnabled)
{
return data;
}
return default(T);
};
// 2. demonstrate that the delegate is retrieved at the run time as an object
object runtimeObject = genericFunction;
//3. Cast it directly to the delegate type
var result =((Func<string, bool, T>) runtimeObject)("hello", true);
Console.WriteLine($"Result {result}");
}
输出:
df["date"]=pd.to_datetime(df["date"])
df["date"]
以此,我所有的日期数据都按升序保存,例如,以月为单位(1,2,3,4,5,6,7,8,9,10,11,12)。虽然,由于我想只将日期显示为累计金额中的月份,所以我必须将日期列转换为表格中的月份,以便按月计算累计案例(总和):
date enrolled
0 2018-06-10 1
1 2018-06-10
2 2018-07-11 3
3 2018-07-11 1
4 2018-07-12
df['date'] = df.date.apply(lambda x: datetime.datetime.strftime(x,'%b'))
df['date']
Ouput:
date enrolled
0 Jun 1
1 Jun
2 Jul 3
3 Jul 1
4 Jul
输出:
pvt=pd.pivot_table(df, index=['date'], value=e['enrolled'], aggfun{'enrolled':'count'})
但我想成为:
enrolled false true
date
Jul 4
Jun 1
但是此代码更改了月份的顺序,例如,将Jul放在第一个,然后放在Jun上,但是在使用此代码之前,第6个月(Jun)的所有日期首先出现,然后是7(Jul)。 问题:代码是否有变化,允许我的日期先遵守月份顺序6(六月),然后是7(七月)? 谢谢。
答案 0 :(得分:1)
您可以将date
设置为索引,然后根据索引对数据帧进行排序,但在此之前,请使用CategoricalIndex
作为
df.index = pd.CategoricalIndex(df.index,
categories=['Jan', 'Feb', 'Mar', 'Apr','May','Jun', 'Jul', 'Aug','Sep', 'Oct', 'Nov', 'Dec'],
sorted=True)
添加到它;我不知道Pandas和Categorical
中都有CategoricalIndex
函数。您也可以使用它,请参考https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.Categorical.html#pandas.Categorical