【问题标题】:Pandas dataframe from a messy list of lists来自混乱列表的 Pandas 数据框
【发布时间】:2017-02-23 22:14:39
【问题描述】:

我有一个来自客户端的非常丑陋的数据导入,位于 .net 文件中。我设法将其转换为列表列表。一个列表的例子是 gven:

['* Table: Movement one\n',
 '* \n',
 '$TSYS:CODE;NAME;TYPE;PCU\n',
 'A;Car;PrT;1.000\n',
 'Air_Bus;Airport Bus;PuT;1.000\n',
 'B;Bus;PuT;1.000\n',
 'C;Company Bus;PrT;2.000\n',
 'CB;City Bus;PuT;1.000\n',',
 'FE;Ferry;PuT;1.000\n',
 'GV1;2-Axle Rigid Goods Vehicle;PrT;1.500\n',
 'GV2;3/4 Axle Rigid Goods Vehicle;PrT;2.000\n',
 'GV3;3/4 Axle Artic Goods Vehicle;PrT;3.000\n',
 'GV4;5+ Axle Artic Goods Vehicle;PrT;3.000\n',
 'IB;Intercity Bus;PuT;1.000\n',
 'IN;Industry Bus;PuT;1.000\n',
 'Loc;Local Bus;PuT;1.000\n',
 'LR;Light Rail;PuT;1.000\n',
 'R;Rail;PuT;1.000\n',
 'S;School Bus;PrT;2.000\n',
 'T;Taxi;PrT;1.100\n',
 'TR;Tram;PuT;1.000\n',
 'W;Walk;PrT;0.000\n',
 'WB;WaterBus;PuT;1.000\n',
 'WT;Water Taxi;PuT;1.000\n',
 'W_PuT;Walk_PuT;PuTWalk;1.000\n',
 '\n',
 '* \n']

我希望将其加载到熊猫数据框中。

前两行和下两行可能会被丢弃。每个列表都包含一个字符串记录,带有; 分隔符。我知道read_csv 的分隔符函数存在,但这在这里不起作用,因为此时我没有从文件中读取。列标题也很复杂。第一个$TSYS 记录必须被丢弃,其余的用作列名。我可以使用strip 删除每条记录中的\n

我试图简单地加载为数据框:

results_df = pd.DataFrame(results[2:-2])
print(results_df.head())

                                 0
0       $TSYS:CODE;NAME;TYPE;PCU\n
1                A;Car;PrT;1.000\n
3  Air_Bus;Airport Bus;PuT;1.000\n
4                B;Bus;PuT;1.000\n

由于我有很多这样的列表,我如何以编程方式获取第 3 行,删除第一个字符串并从剩余的字符串中创建列标题?如何通过; 正确分隔每个后续记录?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用list comprehension 删除\nstripsplit 值:

    results_df = pd.DataFrame([x.strip().split(';') for x in results[3:-2]])
    results_df.columns = results[2].strip().split(';')
    
    print(results_df)
    
       $TSYS:CODE                          NAME     TYPE    PCU
    0           A                           Car      PrT  1.000
    1     Air_Bus                   Airport Bus      PuT  1.000
    2           B                           Bus      PuT  1.000
    3           C                   Company Bus      PrT  2.000
    4          CB                      City Bus      PuT  1.000
    5          FE                         Ferry      PuT  1.000
    6         GV1    2-Axle Rigid Goods Vehicle      PrT  1.500
    7         GV2  3/4 Axle Rigid Goods Vehicle      PrT  2.000
    8         GV3  3/4 Axle Artic Goods Vehicle      PrT  3.000
    9         GV4   5+ Axle Artic Goods Vehicle      PrT  3.000
    10         IB                 Intercity Bus      PuT  1.000
    11         IN                  Industry Bus      PuT  1.000
    12        Loc                     Local Bus      PuT  1.000
    13         LR                    Light Rail      PuT  1.000
    14          R                          Rail      PuT  1.000
    15          S                    School Bus      PrT  2.000
    16          T                          Taxi      PrT  1.100
    17         TR                          Tram      PuT  1.000
    18          W                          Walk      PrT  0.000
    19         WB                      WaterBus      PuT  1.000
    20         WT                    Water Taxi      PuT  1.000
    21      W_PuT                      Walk_PuT  PuTWalk  1.000
    

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 2019-04-16
      • 2017-05-02
      • 2021-03-20
      • 2016-02-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      相关资源
      最近更新 更多