Python Pandas - 日和月混淆

时间:2016-12-19 10:37:32

标签: python date pandas

我有一个' 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将这个月与当天混为一谈,错误解释了日期,我该如何解决这个问题?

2 个答案:

答案 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'