私は最終的にグラフを作成できるように、HTML入力ファイルから行を読み込み、Series/DataFramesを準備しようとしています。私はlxmlのobjectifyを使ってHTMLデータの行を取り出し、リストに変換しています。リストデータを取得してSeriesまたはDataFrameを作成しようとすると、リスト内の項目数に等しい数の要素を含むSeries(またはDataFrame)が取得されますが、要素のデータはリストそのものです。私は私の問題を表示することができdictのリストをSeriesに変換する
最も簡単な方法は次のとおりです。
0 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
1 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
2 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
3 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
4 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
5 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
6 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
7 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
8 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
9 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
10 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
11 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
12 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
13 [[[192.168.1.0, XXDHCP, Y, 255, 0, YYDHCP, Y, ...
type(htmldata[0])
は次のとおりです:lxml.objectify.StringElement
type(htmldata[3])
さ:
from lxml import etree
from lxml import objectify
from pandas import Series
line='<tr class="alt"><td>192.168.1.0</td><td>XXDHCP</td><td>Y</td><td>255</td><td>0</td><td>YYDHCP</td><td>Y</td><td>250</td><td>0</td><td>0%</td><td>505</td><td>505</td><td>0</td><td></td></tr>'
htmldata=(objectify.fromstring(line)).getchildren()
htmlseries=Series(htmldata)
htmlseriesは、のように見える終わるlxml.objectify.IntElement
Iながら次のようなものを探しています:
0 192.168.1.0
1 XXDHCP
2 Y
3 255
4 0
5 YYDHCP
6 Y
7 250
8 0
9 0%
10 505
11 505
12 0
13
私は間違っていますか?私は何が起こっているのか謎めいている。私は、リストに各列を読み込むしようとすると:
data=objectify.fromstring(line).getchildren()
labdata[ip]['Scope'].append(data[0])
labdata[ip]['Cluster1'].append(data[1])
labdata[ip]['Active1'].append(data[2])
...etc...
私のリストは、ように見える終わる:
labdata['192.168.1.0']['Utilization']
['100%',
'96%',
'96%',
'90%',
'81%',
'96%',
'90%',
'97%',
'98%',
'92%',
'99%',
...etc...
]
しかし、いくつかの理由:
Series(labdata['192.168.1.0']['Utilization'])
0 [[[192.168.1.0, XXDHCP, Y, 0, 383, YYDHCP, Y...
1 [[[192.168.1.0, XXDHCP, Y, 28, 355, YYDHCP, ...
2 [[[192.168.1.0, XXDHCP, Y, 28, 355, YYDHCP, ...
3 [[[192.168.1.0, XXDHCP, Y, 76, 307, YYDHCP, ...
4 [[[192.168.1.0, XXDHCP, Y, 104, 279, YYDHCP,...
5 [[[192.168.1.0, XXDHCP, Y, 27, 356, YYDHCP, ...
6 [[[192.168.1.0, XXDHCP, Y, 66, 317, YYDHCP, ...
7 [[[192.168.1.0, XXDHCP, Y, 15, 368, YYDHCP, ...
8 [[[192.168.1.0, XXDHCP, Y, 15, 368, YYDHCP, ...
9 [[[192.168.1.0, XXDHCP, Y, 54, 329, YYDHCP, ...
...etc...
type(labdata['192.168.1.0']['Utilization'][0])
はlxml.objectify.StringElement
ですこれらの要素を通常の文字列やintにキャストする必要がありますか?
labdata ['192.168.1.0'] ['Utilization'] ''のタイプが実際には '' list''であることを確認してください。それはリストのようなものですが実際にはリストではなく、シリーズの最初の要素の型も示します。 '' type(s [0]) '' – Jeff
なぜこれを下降させたのですか?問題は分かりやすく、実績のあるSSCCEをすでに提供しています。欠落している唯一のものは望ましい出力の記述ですが、文脈ではかなり明確だと思います。 – DSM
@ dooz:回避策として、 'Series(obj.pyval for htmldata)'を使うことができます。私はすぐになぜそれを見ることができませんが、 'lxml.objectify。* Element'オブジェクトに関することは、Seriesの構築ではうまくいきません。 – DSM