繁体   English   中英

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

[英]Convert any file (Readable as Text File) to Excel Format (.xlsx) virtually then convert as dataframe -Python

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

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

有什么方法可以虚拟打开 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 操作并转换为 dataframe。

谢谢。

不确定您是否仍在寻找解决方案。 一个建议:您可以使用xml.etree.ElementTree标准库中的 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

也许它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM