【发布时间】:2016-04-21 01:30:30
【问题描述】:
我正在读取一个带有日期时间列的 csv 文件,该列具有随机散布的非日期时间文本块(一次一个块中的 5 行,有时一行中的多个块)。请参阅下面的数据文件截图示例:
日期、时间、计数、故障、电池 12/22/2015,05:24.0,39615.0,0.0,6.42 12/22/2015,05:25.0,39616.0,0.0,6.42 12/22/2015,05:26.0,39617.0,0.0,6.42 12/22/2015,05:27.0,39618.0,0.0,6.42 ,,,, 信号发生器 STSO3275,,,, RM,,,, 默认站点,,,, X2CMBasicOpticsBurst,,,, ,,,, 信号发生器 STSO3275,,,, RM,,,, 默认站点,,,, X2CMBasicOpticsBurst,,,, 12/22/2015,19:57.0,39619.0,0.0,6.42 12/22/2015,19:58.0,39620.0,0.0,6.42 12/22/2015,19:59.0,39621.0,0.0,6.42 12/22/2015,20:00.0,39622.0,0.0,6.42 12/22/2015,20:01.0,39623.0,0.0,6.42 12/22/2015,20:02.0,39624.0,0.0,6.42
我可以将剪贴板中的数据读取到数据框中,如下所示:
df = pd.read_clipboard(sep=',')
我正在寻找一种在转换为日期时间索引之前清除非日期格式字符串的“日期”列的方法。我尝试将列转换为索引,然后转换为列表并像这样过滤:
df.index=df['Date']
df = df[~df.index.get_loc('RMR')]
df = df[~df.index.get_loc('Default Site')]
df = df[~df.index.get_loc('X2CMBasicOpticsBurst')]
df = df[~df.index.get_loc('Sonde STSO3275')]
df = df.dropna()
然后我可以一起解析日期和时间,并使用日期解析工具获得正确的日期时间索引。 但是,文本字段的内容可以更改,并且这种方法似乎非常有限且非 Pythonic。
因此,我正在寻找一种更好、更灵活、更动态的方法来自动跳过索引中的这些非日期字段,希望不必知道其内容的详细信息(例如,在空白行时跳过 4 行块遇到)。
提前致谢。
【问题讨论】: