我有一个' myfile.csv'具有'时间戳'的文件列从
开始(01/05/2015 11:51:00)
并在
结束(2015年5月5日23:22:00)
总跨度为9,727分钟
' myfile.csv'还有一个名为' A'这是一些数值,有些值是' A'在每分钟内,每个都有一个唯一的时间戳到最近的秒。
我的代码如下
df = pd.read_csv('myfile.csv')
df = df.set_index('timestamp')
df.index = df.index.to_datetime()
df.sort_index(inplace=True)
df = df['A'].resample('1Min').mean()
df.index = (df.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M')))
我的问题是python似乎在想时间戳'从
开始(01/05/2015 11:51:00)
- > 1月5日
并在
结束(2015年5月5日23:22:00)
- > 7月5日
但真的'时间戳'从
开始5月1日
并在
结束5月7日
因此,上面的代码生成一个包含261,332行OMG的数据帧,它实际上应该只有9,727行。
不知何故,Python将这个月与当天混为一谈,错误解释了日期,我该如何解决这个问题?
答案 0 :(得分:3)
csv_read
中有许多参数可以帮助您将csv中的日期直接解析为您的pandas DataFrame。在这里,我们可以将parse_dates
与您想要的列设置为日期,然后使用dayfirst
。这默认为false
,因此假设日期在第一列中,以下内容应该可以执行您想要的操作。
df = pd.read_csv('myfile.csv', parse_dates=[0], dayfirst=True)
如果日期列不是第一行,只需将0
更改为列号。
答案 1 :(得分:0)
您在问题中包含的日期格式似乎与您的strftime过滤器不匹配。请查看this以修复字符串参数。 它在我看来应该是以下几点:
'%d/%m/%Y %H:%M:%S'