【发布时间】:2019-04-13 11:16:12
【问题描述】:
我有以下 CSV 文件
日期时间,172.25.150.88,172.25.150.12,172.25.150.105,172.25.150.43,172.25.150.47,172.25.150.95
2018-11-0202:49:42,54457,51776,43164,52074,48227,52165
2018-11-0202:49:43,48728,48516,47605,48202,48077,48304
2018-11-0202:49:44,47879,48699,48243,48153,48483,48364
我使用 pandas 导入文件并设置日期时间索引:
data = pd.read_csv("throughput_88_12_105_43_47_95.csv")
data['datetime'] = pd.to_datetime(data['DateTIme'],format='%Y-%m-%d%H:%M:%S')
现在数据数据框如下所示:
日期时间 172.25.150.88 172.25.150.12 172.25.150.105 172.25.150.43 172.25.150.47 172.25.150.95 日期时间 0 2018-11-0202:49:42 54457 51776 43164 52074 48227 52165 2018-11-02 02:49:42
1 2018-11-0202:49:43 48728 48516 47605 48202 48077 48304 2018-11-02 02:49:43
2 2018-11-0202:49:44 47879 48699 48243 48153 48483 48364 2018-11-02 02:49:44
3 2018-11-0202:49:45 48009 48751 47813 48359 48581 48793 2018-11-02 02:49:45
4 2018-11-0202:49:46 48905 48650 47578 48285 48055 48761 2018-11-02 02:49:46
要对所有列进行 1 分钟平均:
df = pd.DataFrame(data = data, columns = ['172.25.150.88','172.25.150.12','172.25.150.105','172.25.150.43','172.25.150.47','172.25.150.95'],index=data['datetime'])
df.resample('1Min').mean()
这给了我:
172.25.150.88 172.25.150.12 172.25.150.105 172.25.150.43 172.25.150.47 172.25.150.95 日期时间
2018-11-02 02:49:00 NaN NaN NaN NaN NaN NaN2018-11-02 02:50:00 NaN NaN NaN NaN NaN NaN
2018-11-02 02:51:00 NaN NaN NaN NaN NaN NaN
如何获得 1 分钟平均值?我得到的只是南。
【问题讨论】:
-
检查你的数据类型,也许他们没有正确读入数字。
print df.dtypes应该为数字列提供float64或int64。其他任何内容都表明您的数据集中存在问题 -
>>> df.dtypes 172.25.150.88 float64 172.25.150.12 float64 172.25.150.105 float64 172.25.150.43 float64 172.25.150.47 float64 172.25.150.95 float64 对象
-
鉴于您正在使用 datetimeindex,您需要使用 df.index=pd.to_datetime(df.index,format='%Y-%m-%d%H:%M:% S')
-
是不是 >>> df.index = pd.to_datetime(df.index,format='%Y-%m-%d%H:%M:%S') 但是 >>> df.resample('1Min').mean() 仍然给我所有的 NaN