将任何文件(可读为文本文件)转换为 Excel 格式(.xlsx),然后转换为数据帧 -Python

时间:2021-06-11 10:38:26

标签: python excel pandas

我几乎完成了我的项目 - 一个应用程序,用于将包含数千行的机器日志转换为列,并通过 Pandas 分析其中的多个数据。

但我必须先手动打开机器日志文件并另存为 .xlsx,然后在应用程序中打开保存的 .xlsx 文件才能将其转换为数据帧。

有没有办法在python中虚拟打开文件并转换为数据框?

或打开文件>然后转换为excel>然后转换为数据框?

我试过了:

def openanyfile():
    f = open("Machine.LOG", "r")
    print(f.read())
    data = pd.DataFrame(f)
    print(data)

它已成功读取并打印文件,但在转换为 pd.DataFrame 时,结果为“Empty DataFrame”。

此处附上示例原始文件:https://drive.google.com/file/d/1M6BXpqn10MJCc5mUfg9dGCJKAz_05G3W/view?usp=sharing

它作为文本文件可读。

当打开到 MS Excel 时,它将创建 2 列,我通过 pd.read_excel 操作和转换为数据框。

谢谢。

1 个答案:

答案 0 :(得分:0)

不确定您是否仍在寻找解决方案。一个建议:您可以使用 Python 标准库中的 xml.etree.ElementTree。使用您提供的文件,这似乎有效:

import xml.etree.ElementTree as ETree

with open('Machine.LOG', 'rt') as file:
    data = '<Root>' + file.read() + '</Root>'
df = pd.DataFrame.from_records([
        {item.tag: item.text for item in record}
        for record in ETree.fromstring(data)
     ])

该文件不包含所有封闭标签,所以我不得不添加一些没有实际意义的人工标签<Root>

结果 (print(df):

                     Timestamp  ... Value
0     FRI NOV 02 04:36:42 2018  ...   NaN
1     FRI NOV 02 04:36:42 2018  ...   NaN
2     FRI NOV 02 04:36:46 2018  ...   NaN
3     FRI NOV 02 04:37:53 2018  ...   NaN
4     FRI NOV 02 04:37:56 2018  ...   NaN
...                        ...  ...   ...
9069  TUE NOV 06 03:09:09 2018  ...   NaN
9070  TUE NOV 06 03:09:13 2018  ...   NaN
9071  TUE NOV 06 03:09:14 2018  ...   NaN
9072  TUE NOV 06 03:09:15 2018  ...   NaN
9073  TUE NOV 06 03:09:16 2018  ...   NaN

也许有帮助。