猿问

Python 将列表的 CSV 部分转换为 Pandas 数据框

我正在提取一个包含许多不同数据的文本文件:序列号、类型和 csv 数据日志:

A123>

A123>读sn

SN = 12143

A123>读取 cms-sn

cms-sn = 12143-00000000-0000

A123>读取 fw-rev

fw-rev = 1.3, 1.3

A123>读取日志

日志 =

1855228,1,0,41,-57,26183,25,22,21,22,0,0,0,89,2048,500,0,0

1855240,1,0,33,0,26319,25,22,22,23,0,0,0,89,2048,500,0,0

2612010,1,0,41,-82,26122,20,21,21,21,0,0,0,87,2048,500,0,0

2612142,1,0,49,301,27607,21,22,21,21,0,0,0,81,2048,500,0,0

这是我到目前为止的代码:

import pandas as pd


lines = []                  # Declare an empty list named "lines"

with open ('03-22-2019.txt', 'rt') as in_file:  # Open file 

    for line in in_file:  # For each line of text in in_file, where the data is named "line",

        lines.append(line.rstrip('\n'))   # add that line to our list of lines, stripping newlines.

    

while('' in lines):

        lines.remove("")


lines = [x for x in lines if 'A123' not in x]  #delete all lines with 'A123'



for element in lines:            # For each element in our list,

        print(element)              # print it.

        


split_line = lines[0].split()  # create list with serial number line

Serial_Num = split_line[-1]

print(Serial_Num)


split_line = lines[1].split()  # go to line with CMS SN

CMS_SN = split_line[-1]

print(CMS_SN)


split_line = lines[2].split()

Firm_Rev_1 = split_line[-1]

Firm_Rev_2 = split_line[-2]

print(Firm_Rev_1)

print(Firm_Rev_2)

                                  #  Problem section starts here!

start_data = lines.index("log =") + 1                   #<<<<<<<<<<

data = [x for x in lines[start_data:].split(",")]       #<<<<<<<<<<

#dfObj = pd.DataFrame(lines[start_data:-1].split(","))  #<<<<<<<<<<

当我尝试将数据的日志部分导入数据帧并将 CSV 值拆分到它们自己的列中时,问题就出现了。


我如何以编程方式找到日志数据的开头,并将数据从那里读到最后到 Pandas 数据帧中?


潇湘沐
浏览 242回答 1
1回答

莫回无

看起来你很接近。# this will get you a list of lists for each line.data = [line.split(',') for line in lines[start_data:]]# This should construct your data framedfObj = pd.DataFrame(data=data, columns=[list, of, column, names])
随时随地看视频慕课网APP

相关分类

Python
我要回答