Pandas 使用 RegExp 生成前导和尾随 NAN 列

Pandas with RegExp Producing Leading and Trailing NAN columns

我正在使用 pandas:

读取文件中的一些简单数据
2018:08:23:07:35:22:INFO:__main__:Info logger message

文件中没有开头或结尾的制表符、空格等。

我使用以下方法将该文件读入数据框:

df = pandas.read_csv("/u01/app/DataLake/tester/tester.log", header=None, index_col=False, sep=r'(\d{4}:\d{2}:\d{2}:\d{2}:\d{2}:\d{2}):(.+):(.+):(.+)',engine='python')

但是,我得到以下信息:

>>> print(df)
     0                    1        2         3                       4   5
0  NaN  2018:08:23:07:35:22     INFO  __main__     Info logger message NaN

第一列和最后一列(NaN 值)来自哪里?

Python:3.4.8 Pandas: 0.19.2

我真的很惊讶你的正则表达式竟然有效!
sep 参数用于识别要拆分的 where,而不是要识别的 what 标记。
您真正想要的(实际上,等同于您想要的)是一个可以:

的正则表达式
  • 每个 space.
  • 拆分
  • : 上拆分,除非接下来的 2 个字符是数字后跟另一个 :.

这可以使用一些高级正则表达式匹配来实现,特别是 "lookahead"。有关详细说明,请参阅 this page

这应该适用于您的示例:

pd.read_csv(path_to_csv, sep=' |:(?!\d{2}:)', header=None, engine='python')