我有一个按 24 小时周期排列的数据集,并且我正在尝试创建一个数据清理系统,该系统可以处理可能会跳过小时周期的情况(例如从凌晨 4 点到下午 3 点,例如,在这样的时间段之间没有丢失的行:)
DET_SCN DATE HOUR MINUTE COUNT OCCUPANCY DET_FAULT CC_FAULT SUB_STAT
D11136 07/01/2014 0 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 1 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 2 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 3 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 4 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 15 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 16 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 17 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 18 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 19 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 20 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 21 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 22 0 0 0 FALSE TRUE FALSE
D11136 07/01/2014 23 0 0 0 FALSE TRUE FALSE
我希望数据集插入并用 NaN 填充缺失的行到目前为止,在加载我的数据后,我已经尝试过
dataIn = pd.read_csv(filename, delimiter=',')
frame = DataFrame(dataIn)
print "Cleaning %s " % filename
siteRef = frame['DET_SCN'].str.extract('(D\d{4})').apply(Series,1).stack()
armRef = frame['DET_SCN'].str.extract('(\d{1}$)').apply(Series,1).stack()
armRef.index = armRef.index.droplevel(-1)
siteRef.index = siteRef.index.droplevel(-1)
#append column names
siteRef.name= 'SITE_REF'
armRef.name = 'ARM_REF'
print "printing siteRef"
print siteRef
print "printing armRef"
print armRef
#frame.join(siteRef,armRef columns['SITE_REF','ARM_REF'])
cleanframe = pd.concat([siteRef,armRef,frame], axis=1)
cleanframe.set_index('HOUR').reindex_axis([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],axis=1).head()
cleanframe.HOUR = cleanframe.HOUR.interpolate('linear')
但这对我不起作用。我不确定我做错了什么。我试过查看 stackoverflow 上的其他答案,但没有找到答案。
在此先感谢您的帮助。
编辑:cleanframe 头看起来像这样
0 CC_FAULT COUNT DATE DET_FAULT DET_SCN HOUR MINUTE OCCUPANCY \
0 D1113 NaN NaN NaN NaN NaN NaN NaN NaN
1 D1113 NaN NaN NaN NaN NaN NaN NaN NaN
2 D1113 NaN NaN NaN NaN NaN NaN NaN NaN
3 D1113 NaN NaN NaN NaN NaN NaN NaN NaN
4 D1113 NaN NaN NaN NaN NaN NaN NaN NaN
SUB_STAT
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
和 cleanframe 信息
<class 'pandas.core.frame.DataFrame'>
Int64Index: 37227 entries, 0 to 12408
Data columns (total 10 columns):
0 24818 non-null object
CC_FAULT 12409 non-null object
COUNT 12409 non-null float64
DATE 12409 non-null object
DET_FAULT 12409 non-null object
DET_SCN 12409 non-null object
HOUR 12409 non-null float64
MINUTE 12409 non-null float64
OCCUPANCY 12409 non-null float64
SUB_STAT 12409 non-null object
dtypes: float64(4), object(6)None