我有一个csv文件如下:
type
日期格式为Date,Data
01-01-01,111
02-02-02,222
03-03-03,333
。我想从这些日期计算数据的月平均值(我的文件中有超过3个日期)。
为此,我希望使用以下代码:
YEAR-MONTH-DAY
出于某种原因,这给了我错误import pandas as pd
import dateutil
import datetime
import os,sys,math,time
from os import path
os.chdir("in/base/dir")
data = pd.DataFrame.from_csv("data.csv")
data['Month'] = pd.DatetimeIndex(data['Date']).month
mean_data = data.groupby('Month').mean()
with open("data_monthly.csv", "w") as f:
print(mean_data, file=f)
。
所以似乎KeyError: 'Date'
没有读取标题。有谁知道如何解决这个问题?
答案 0 :(得分:3)
您的Date
列标题已被读取,但已放入索引中。你必须使用:
data['Month'] = pd.DatetimeIndex(data.reset_index()['Date']).month
另一种解决方案是在从csv。
创建数据帧时使用index_col=None
data = pd.DataFrame.from_csv("data.csv", index_col=None)
之后您的代码就可以了。
理想的解决方案是使用read_csv()。
data = pd.read_csv("data.csv")
答案 1 :(得分:1)
使用 read_csv 方法。默认情况下,它以逗号分隔。
import pandas as pd
df = pd.read_csv(filename)
print(pd.to_datetime(df["Date"]))
<强>输出:强>
0 2001-01-01
1 2002-02-02
2 2003-03-03
Name: Date, dtype: datetime64[ns]