0

我有一个按 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
4

1 回答 1

0

以下对我有用,我更改的第一件事是axis参数,它应该被axis=0删除,因为这是默认设置。然后我重置索引并将其重命名以恢复“HOUR”列并执行插值:

In [37]:

df = df.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])
df.reset_index(inplace=True)
df.rename(columns={'index':'HOUR'}, inplace=True)
df['HOUR'] = df.HOUR.interpolate('linear')
df
Out[37]:
    HOUR DET_SCN        DATE  MINUTE  COUNT  OCCUPANCY DET_FAULT CC_FAULT  \
0      0  D11136  07/01/2014       0      0          0     False     True   
1      1  D11136  07/01/2014       0      0          0     False     True   
2      2  D11136  07/01/2014       0      0          0     False     True   
3      3  D11136  07/01/2014       0      0          0     False     True   
4      4  D11136  07/01/2014       0      0          0     False     True   
5      5     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
6      6     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
7      7     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
8      8     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
9      9     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
10    10     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
11    11     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
12    12     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
13    13     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
14    14     NaN         NaN     NaN    NaN        NaN       NaN      NaN   
15    15  D11136  07/01/2014       0      0          0     False     True   
16    16  D11136  07/01/2014       0      0          0     False     True   
17    17  D11136  07/01/2014       0      0          0     False     True   
18    18  D11136  07/01/2014       0      0          0     False     True   
19    19  D11136  07/01/2014       0      0          0     False     True   
20    20  D11136  07/01/2014       0      0          0     False     True   
21    21  D11136  07/01/2014       0      0          0     False     True   
22    22  D11136  07/01/2014       0      0          0     False     True   
23    23  D11136  07/01/2014       0      0          0     False     True   

   SUB_STAT  
0     False  
1     False  
2     False  
3     False  
4     False  
5       NaN  
6       NaN  
7       NaN  
8       NaN  
9       NaN  
10      NaN  
11      NaN  
12      NaN  
13      NaN  
14      NaN  
15    False  
16    False  
17    False  
18    False  
19    False  
20    False  
21    False  
22    False  
23    False 
于 2014-09-15T10:55:22.690 回答