2017-06-22 48 views
0

我从Excel文件导入并需要根据字符串值删除最后一行。基于字符串搜索删除df的最后一行

在这种情况下,我需要在日期在65排

最后一个(可预测的)行结束将是包含字符串“网账号”少5行的行。

是否可以只选择日期格式的行?不知道哪个是最好的方法来解决这个问题?

60 2011-08-31 00:00:00  285085   0   0   0 
61 2011-09-30 00:00:00  273926   0   0   0 
62 2011-10-31 00:00:00  287235   0   0   0 
63 2011-11-30 00:00:00  284034   0   0   0 
64 2011-12-31 00:00:00  284974   0   0   0 
65 2012-01-31 00:00:00  294412   0   0   0 
66     NaN  NaN  NaN  NaN  NaN 
67     58  222613  378197  25000  33350 
68     NaN  NaN  NaN  NaN  NaN 
69     NaN  NaN  NaN  NaN  NaN 
70  Net Account Loss  NaN  NaN  -92135  NaN 
71     NaN  NaN  NaN  NaN  NaN 
+0

遗憾没没有得到你想要的东西。 – ammy

+0

为我显示正确的数据和预期的数据。 – ammy

回答

1

如果需要删除所有行是第一列没有日期时间使用to_datetime与参数errors='coerce' - 它返回NaT不日期时间,通过notnull和过滤通过boolean indexing创建面膜:

mask = pd.to_datetime(df['date'], errors='coerce').notnull() 
df = df[mask] 
print (df) 
        date   a b c d 
60 2011-08-31 00:00:00 285085.0 0.0 0.0 0.0 
61 2011-09-30 00:00:00 273926.0 0.0 0.0 0.0 
62 2011-10-31 00:00:00 287235.0 0.0 0.0 0.0 
63 2011-11-30 00:00:00 284034.0 0.0 0.0 0.0 
64 2011-12-31 00:00:00 284974.0 0.0 0.0 0.0 
65 2012-01-31 00:00:00 294412.0 0.0 0.0 0.0 
+0

真棒解决方案!谢谢。 – diogenes

+0

如果我的回答很有帮助,请不要忘记[接受](http://meta.stackexchange.com/a/5235/295067) - 点击答案旁边的复选标记('✓')将其从灰色填充。谢谢。 – jezrael

相关问题