它好像在error_bad_lines
和warn_bad_lines
参数仅适用于包含太多的列,不列太少行。是否有一种简单的方法可以消除数据框中的所有短列,最好是在阅读时使用?消除短行与read_table()使用熊猫
例如,下面的伟大工程,但每一个现在,再有就是包含文本,而不是一个时间戳的一列列。这可以防止将数据帧转换为所需的日期时间索引格式。
data = pd.read_table(filepath, sep='\t', parse_dates=True, index_col='Date/Time', error_bad_lines=True)
数据帧则类似于下面的图片:
我可以通过使用df.iterrows()
并剔除坏行的行迭代,但我觉得必须有一个更好/更快/更性感的方式熊猫看起来很棒。
想法/想法?
2014年2月27日: 截至目前,我完成这个使用以下策略:
- 定义函数返回
True
如果索引是一个有效的时间戳 - 创建在一个临时列包含索引DF
- 应用自定义函数来临时列
- 保持其
temp
列是True
仅列
看起来是这样的:
def valid_row(ind):
return True if (type(pd.to_datetime(ind)) is pd.tslib.Timestamp) else False
data = pd.read_table(runDir + "VapsTest_20130429.txt", sep='\t', parse_dates=True, index_col='Date/Time', error_bad_lines=True, keep_default_na=False)
data['temp'] = data.index
data['temp'] = data['temp'].apply(valid_row)
data = data[data['temp'] == True]
data.index = pd.to_datetime(data.index)
这个过程能够完成任务,并给我留下一个干净的,用数据帧索引的日期时间。必须有更好的方法,对吧?
感谢您的想法。这似乎删除与NaN作为索引(良好)的行,尽管该行似乎仍然存在(只是空的);我不确定未来这是否会成为问题。但主要问题仍然存在。如上所见,一些行在索引中有文本,我需要去掉那些!我可以遍历每一行,尝试转换为时间戳并删除,如果失败,但似乎没有必要。 –