date LEV1 LEV2 LEV3 L2 L3 L4
2013-01-01 1:00 266.591 266.591 266.591 1000 1200 1400
2013-01-01 2:00 266.479 266.479 266.479 1000 1200 1400
2013-01-01 3:00 266.373 266.373 266.373 1000 1200 1400
2013-01-01 4:00 266.273 266.273 266.273 1000 1200 1400
2013-01-01 5:00 266.178 266.178 266.178 1000 1200 1400
2013-01-01 6:00 265.05 265.05 265.05 1000 1200 1400
2013-01-01 7:00 266.065 266.065 266.065 1000 1200 1400
我想在所选范围的多个数字上为每小时选择和绘制数据(来自pandas dataframe
)为X和Y(比如2013-01-01 20:00到2013-01 -02 15:00)。
我想根据所选范围为第2~4列的值选择行X-axis
,每行有3条记录[273.548 273.322 272.8313]和
对于相同的日期范围,另一组行为Y-axis
,例如[1000 1200 1400]表示第39~41列的值。我试过
import pandas as pd
dft = pd.read_table("3year.csv", sep=" ",delimiter =",")
J = dft[['LEV1','LEV2', 'LEV3']].as_matrix()
G = dft[['L2','L3','L4']].as_matrix()
print J
[ 270. 270. 270.]
[ 270. 270. 270.]
[ 270. 270. 270.]
...,
[ 273.548 273.322 272.831]
[ 273.575 273.289 272.634]
[ 273.598 273.254 272.43]]
但我不能根据日期选择,因为它选择了相关列的所有数据
答案 0 :(得分:1)
必须有各种(更智能)的方式来实现您的目标。但是我将使用pandas datetimeIndex向您展示一个可能的示例。
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
selector_LEV = (df['LEV1'] <= 266.373) & (df['LEV2'] <= 266.373) & (df['LEV3'] <= 266.373)
selector_L = (df['L2'] == 1000) & (df['L3'] == 1200) & (df['L4'] == 1400)
df[selector_LEV & selector_L]['20130101':]
LEV1 LEV2 LEV3 L2 L3 L4
date
2013-01-01 03:00:00 266.373 266.373 266.373 1000 1200 1400
2013-01-01 04:00:00 266.273 266.273 266.273 1000 1200 1400
2013-01-01 05:00:00 266.178 266.178 266.178 1000 1200 1400
2013-01-01 06:00:00 265.050 265.050 265.050 1000 1200 1400
2013-01-01 07:00:00 266.065 266.065 266.065 1000 1200 1400
现在你可以更进一步,或直接使用pandas绘图功能(可能是基于matplotlib),如df[selector_LEV & selector_L]['20130101':].plot()
。