我几乎完成了我的项目 - 一个应用程序,用于将包含数千行的机器日志转换为列,并通过 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 操作和转换为数据框。
谢谢。
答案 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
也许有帮助。