2017-02-23 6 views
1

.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'] 

これをpandasデータフレームにロードします。

上2行と下2行は破棄される可能性があります。各リストには、文字列レコードが含まれ、;セパレータが含まれます。私は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 

私はこれらのリストの多くを持っているので、どのように私はprogramtically、3行目を取る最初の文字列を削除し、残りの列のヘッダーを作成するのですか?後続のレコードごとに正しく;で区切るにはどうすればよいですか?

答えて

1

あなたはstripsplit値によって\nを削除list comprehension使用することができます。よろしくお願い

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 
+0

を。私が受け入れるまで8分;) – LearningSlowly

+1

喜んで助けることができます!幸運と感謝。 – jezrael

関連する問題