2017-06-28 36 views
0

我試圖將我的方案與以下 - 但未能巨蟒-3刪除行

Pandas - Python, deleting rows based on Date column

我有以下的列的output.csv文件

Customer, Alertkey, Node, Alertgroup, FirstOccurrence, 
TKT_Flag, X733SpecificProb, TKT_TicketNumber, TKT_Keyword 

該文件將從數據庫增量每7天與去年7天的數據進行更新

所以最好我不得不放棄第7 d來自文件本身的數據。

我可以寫在下面,但得到的錯誤類型「類型錯誤:字符串索引必須是整數」

import pandas as pd 
from dateutil.relativedelta import relativedelta 
from dateutil import parser 


df=pd.read_csv('output.csv', usecols=['FirstOccurrence'],parse_dates=[0]) 
df=df['FirstOccurrence'].iloc[0] 
dt = parser.parse(df) 
SevenDays = dt + relativedelta(days = +7) 
df=df[(parser.parse(df['FirstOccurrence']) < SevenDays)].drop(df.columns) 

將有幾百萬行。我從2016年1月1日起復制前幾行,但將從2016年1月1日至截止日期。每週將追加和應該刪除的第7天的記錄 - 即第一次應該從1月1日刪除記錄到1月6日等

Customer,Alertkey,Node,Alertgroup,FirstOccurrence,TKT_Flag,X733SpecificProb,TKT_TicketNumber,TKT_Keyword 
Cust1,Cust1_11_53_Services_Warning,Node_Cust1,ITM_K53_SERVICEMON,2016-01-01 00:12:59,1005,TOLPUKC_OS:25223174,INC000014799786,CGMIDDLEWARE_MEDIUM_CONNECTDIRECT 
Cust1,Cust1_11_53_Services_Warning,Node1_Cust1,ITM_K53_SERVICEMON,2016-01-01 00:12:59,1005,TOLPUKC_OS:25223175,INC000014799785,CGMIDDLEWARE_MEDIUM_CONNECTDIRECT 
Cust2,Cust2_21_NT_System_CPU_Critical,Cust2_Node8,ITM_NT_System,2016-01-01 00:15:48,101,PARPFRC_OS:21192843,INC000000628410,WINDOWS_MEDIUM_DEFPRODUCTSILVER 
Cust3,Cust3_10352_LZ_TDW_DISK_Critica,Cust3_Node22,ITM_Linux_Disk,2016-01-01 00:17:05,200,TOLPUKC_OS:25223370,INC000001412280,CGMOM_HIGH_DEFPRODUCT 
Cust6,Cust6_11_53_Services_Warning,Cust6_Node700,ITM_K53_SERVICEMON,2016-01-01 00:22:36,22,TOLPUKC_OS:25223601,INC000002250120,CGIOWINTELIMOC_MEDIUM_DEFPRODUCT 
+0

請包括_complete_錯誤消息。 – DyZ

+0

你的代碼表示放列不是行嗎? – dartdog

+0

如下錯誤 文件 「C:\ ProgramData \ Anaconda3 \ LIB \站點包\ Spyder的\ utils的\網站\ sitecustomize.py」,線路866,在RUNFILE 的execfile(文件名,命名空間) 文件「C:\ Program Files \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py「,第102行,在執行文件中 exec(compile(f.read(),filename,'e​​xec'),namespace) File」 D:/Anirban_Backup/Drive_D/W0rk/Script/Python/DataBase_Connection/Delete_Rows_BasedOnTime.py「,第10行,在 df = df [(parser.parse(df ['FirstOccurrence'])

回答

0

替換此: df=df[(parser.parse(df['FirstOccurrence']) < SevenDays)].drop(df.columns)

有: df = df.drop(df[(parser.parse(df['FirstOccurrence']) < SevenDays)].index, inplace=True)

試試這個希望這對你有幫助。

+0

DF = df.drop(DF [(parser.parse(DF [ 'FirstOccurrence'])