0

我有一个无线电读数,基本上将所有数据转储到电子表格(.xlsx)的一列(列'A')中。有没有办法将二十多列解析成熊猫的数据框?这是 excel 文件 A 列中的数据示例:

DSP ALLMSINFO:SECTORID=0,CARRIERID=0;
Belgium351G
+++    HUAWEI        2020-04-03 10:04:47 DST 
O&M    #4421590
%%/*35687*/DSP ALLMSINFO:SECTORID=0,CARRIERID=0;%%
RETCODE = 0  Operation succeeded

Display Information of All MSs-
------------------------------
Sector ID  Carrier ID  MSID            MSSTATUS  MSPWR(dBm)  DLCINR(dB)  ULCINR(dB)  DLRSSI(dBm)  ULRSSI(dBm)  DLFEC  ULFEC  DLREPETITIONFATCTOR  ULREPETITIONFATCTOR  DLMIMOFLAG  BENUM  NRTPSNUM  RTPSNUM  ERTPSNUM  UGSNUM  UL PER for an MS(0.001)  NI Value of the Band Where an MS Is Located(dBm)  DL Traffic Rate for an MS(byte/s)  UL Traffic Rate for an MS(byte/s)
0          0           0011-4D10-FFBA  Enter     -2          29          27          -56          -107         21     20     0                    0                    MIMO B      2      0         0        0         0       0                        -134                                              158000                             46000
0          0           501F-F63B-FB3B  Enter     13          27          28          -68          -107         21     20     0                    0                    MIMO A      2      0         0        0         0       0                        -134                                              12                                 8                                                        

基本上我只想解析这些数据并将表格放在数据框中。任何帮助将不胜感激。

4

2 回答 2

0

你可以试试 pandas read excel

    df = pd.read_excel(filename, skip_rows=9)

这假设我们要忽略不构成数据帧的前 9 行!此处的文档https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html

于 2020-04-06T18:28:39.733 回答
0

加载 excel 文件并在空格上拆分列。

“DLMIMOFLAG”可能会出现问题,因为它在数据中有一个空格,这将导致它被分成两列。这是可以接受的,或者列之后是否重新合并在一起是可选的。

手动添加标题而不是加载它,否则标题中的所有空格都会混淆加载和拆分例程。

import numpy as np
import pandas as pd

# Start on the first data row - row 10
# Make sure pandas knows that only data is being loaded by using 
# header=None
df = pd.read_excel('radio.xlsx', skiprows=10, header=None)

这给出了一个只有数据的数据框,全部保存在一列中。

要将这些拆分出来,请确保 pandas 对第一列的引用使用df.iloc[:,0],根据空格拆分列,str.split()并通知 pandas 输出将是一个 numpy list values.tolist()

这看起来像:

df2 = pd.DataFrame(df.iloc[:,0].str.split().values.tolist())

请注意,给出的示例有一个额外的列,因为“DLMIMOFLAG”中的空格导致它被分成两列。这将被称为“DLMIMOFLAG_A”和“DLMIMOFLAG_B”。

现在添加列标题。
可以选择先创建一个列表。

column_names = ["Sector ID", "Carrier ID", "MSID", "MSSTATUS", "MSPWR(dBm)", "DLCINR(dB)", "ULCINR(dB)",
                "DLRSSI(dBm)", "ULRSSI(dBm)", "DLFEC", "ULFEC", "DLREPETITIONFATCTOR", "ULREPETITIONFATCTOR",
                "DLMIMOFLAG_A", "DLMIMOFLAG_B", "BENUM", "NRTPSNUM", "RTPSNUM", "ERTPSNUM", "UGSNUM",
                "UL PER for an MS(0.001)", "NI Value of the Band Where an MS Is Located(dBm)", 
                "DL Traffic Rate for an MS(byte/s)", "UL Traffic Rate for an MS(byte/s)",]
df2.columns = column_names

这将输出作为带有列标题的完整数据框。

Sector ID Carrier ID MSID           MSSTATUS
0            0       0011-4D10-FFBA Enter
0            0       501F-F63B-FB3B Enter
于 2020-04-06T22:20:47.550 回答