我正在使用熊猫读取.csv文件。我想按月分析此文件的数据。最初,前5行如下所示:
date value
01.04.2017 208.04
01.04.2017 81
01.04.2017 280
01.04.2017 403.08
01.04.2017 71.1
所以我用:
df1['date']=pd.to_datetime(df1['date'], format='%d.%m.%Y')
df1['month']=df1['date'].dt.strftime('%B')
但是,当我查看新的月份列时,会得到以下信息:
print(df1['month'].unique())
>>['April' 'May' 'June' 'July' 'August' 'September' 'January' 'October'
'November' 'December' 'February' 'March']
一月是九月之后,尽管在原始.csv中日期已正确排序。是否有人有解决此问题的想法,或者问题出在哪里?预先谢谢你!
P.S。我使用以下命令导入文件:
df1=pd.read_csv("GF2017_2018.csv", delimiter=';',dtype=str, index_col=False, encoding='latin-1')
答案 0 :(得分:1)
如pandas.Series.unique的文档中所述,唯一性是按出现顺序返回的,似乎您所做的任何事情都不会改变数据的顺序。我会仔细检查数据中月份的实际顺序。
答案 1 :(得分:0)
我认为您可以对日期时间进行排序,因为您的日期时间顺序错误。
df1['date']=pd.to_datetime(df1['date'], format='%d.%m.%Y')
df1 = df1.sort_values('date')
df1['month']=df1['date'].dt.strftime('%B')
如果需要正确排序,另一种解决方案是将飞蛾转换为ordered categoricals:
months = ['January','February','March','April','May','June','July','August',
'September','October','November','December']
df1['month'] = pd.Categorical(df1['date'].dt.strftime('%B'), ordered=True, categories=months)
df1 = df1.sort_values('date')