データフレームに作成しようとした次の辞書のリストがあります。すべての「ヘッダー」値をdfに取得できましたが、「値」を取得する方法がわかりません。わざわざ取得しようとしています。同じ行のヘッダーと値。
new_inner = [{'Header':{'TimeserieId': '108'、 'ObjectID': 'SummeSLPVerbrauchDayAhead'、 'Unit': 'kWh'、 'Granularity': 'DAY'、 'Name': 'SLP消費予測日先 '、' LastUpdate ':' 2017-12-30T11:15:00.000Z '}、'値 ':{'値 ':{' FromUTC ':' 2017-12-31T05:00:00.000Z '、' UntilUTC ':' 2018-01-01T05:00:00.000Z '、' TSO-Value ':' 100947866.161 '}}}、{'ヘッダー ':{' TimeserieId ':' 109 '、' ObjectID ':' SummeSLPVerbrauchIntraDay '、 '単位': 'kWh'、 '粒度': 'DAY'、 '名前': '日中のSLP消費予測'、 'LastUpdate': '2017-12-31T23:15:00.000Z'}、 '値':{ '値':{'FromUTC': '2017-12-31T05:00:00.000Z'、 'UntilUTC': '2018-01-01T05:00:00.000Z'、 'TSO-Value': '100359943.649'}}}、{'ヘッダー ':{' TimeserieId ':' 2156 '、' ObjectID ':' SummeSLPVerbrauchTirolIntraDay '、' Unit ':' kWh '、' Granularity ':' DAY '、' Name ':' SLP消費予測日中Tyrol '、' LastUpdate ':' 2019-12-30T15:44:14.267Z '}、'値 ':なし}、{'ヘッダー ':{' TimeserieId ':' 2157 '、' ObjectID ':' SummeSLPVerbrauchTirolDayAhead '、'ユニット ':' kWh '、'粒度 ':' DAY '、'名前 ':' SLP消費予測1日前のTyrol '、' LastUpdate ':' 2019-12-30T15:44:14.269Z '}、'値 ':なし}、{ 'ヘッダー ':{' TimeserieId ':' 2158 '、' ObjectID ':' SummeSLPVerbrauchVorarlbergIntraDay '、' Unit ':' kWh '、' Granularity ':' DAY '、' Name ':' SLP消費予測日中VBG '、' LastUpdate ':' 2019-12-30T15:44:14.273Z '}、'値 ':なし}、{'ヘッダー ':{' TimeserieId ':' 2159 '、' ObjectID ':' SummeSLPVerbrauchVorarlbergDayAhead '、'ユニット ':' kWh '、'粒度 ':' DAY '、'名前 ':' SLP消費予測VBGの前日 '、' LastUpdate ':' 2019-12-30T15:44:14.294Z '}、'値 ':なし}]DAY '、'名前 ':' SLP消費予測日中VBG '、' LastUpdate ':' 2019-12-30T15:44:14.273Z '}、'値 ':なし}、{'ヘッダー ':{' TimeserieId ': '2159'、 'ObjectID': 'SummeSLPVerbrauchVorarlbergDayAhead'、 'Unit': 'kWh'、 'Granularity': 'DAY'、 'Name': 'SLP消費予測1日先のVBG'、 'LastUpdate': '2019-12- 30T15:44:14.294Z '}、'値 ':なし}]DAY '、'名前 ':' SLP消費予測日中VBG '、' LastUpdate ':' 2019-12-30T15:44:14.273Z '}、'値 ':なし}、{'ヘッダー ':{' TimeserieId ': '2159'、 'ObjectID': 'SummeSLPVerbrauchVorarlbergDayAhead'、 'Unit': 'kWh'、 'Granularity': 'DAY'、 'Name': 'SLP消費予測1日先のVBG'、 'LastUpdate': '2019-12- 30T15:44:14.294Z '}、'値 ':なし}]'名前': 'SLP消費予測VBGの前日'、 'LastUpdate': '2019-12-30T15:44:14.294Z'}、 '値':なし}]'名前': 'SLP消費予測VBGの前日'、 'LastUpdate': '2019-12-30T15:44:14.294Z'}、 '値':なし}]
現在のコード:
df3 = pd.DataFrame([i['Header'] for i in new_inner])
しかし、私がやろうとすると:
df3 = pd.DataFrame([i['Values'] for i in new_inner])
次のエラーが発生します
'NoneType'オブジェクトには属性 'keys'がありません
私の2つの質問は、なぜ値ディクショナリが見つからないのか、そしてヘッダーディクショナリと値ディクショナリをデータフレームの同じ行に入れるにはどうすればよいのかということです。
次のような出力を探しています:DataFrame出力
最初にデータを準備してから、に変換することをお勧めします Dataframe
dict
フラットキーHeader
+Values
を単一のdictにValues
チェックの場合None
、デフォルトのdict値を返すか、内部キーを返すかValue
values = [{'Header': {...}}] # initial data
def getValueOrDefault(v):
if v is None:
return {'FromUTC': None, 'UntilUTC': None, 'TSO-Value': None}
return v['Value']
values = [{**value['Header'], **getValueOrDefault(value['Values'])} for value in values]
# values is now [{'TimeserieId': '108', ...}, {}, {}, ...]
df3 = pd.DataFrame(values)
print(df3)
データ準備の詳細:最初の値の例
{**first['Header']}
Header
このレベルのデータを削除するには、値からすべてのキー/値をフラット化します
{**value['Header'], **value['Values']}
プットすべてのキーからキー/値Header
とキーValues
を一緒しかし、あなたには、いくつか持っているとしてNone
、あなたが検証を適用することができるが、
None
良いキーを使用して、デフォルトの辞書を取得None
khe内部Value
キーを取得しない場合first = values[0]
print(first) # {'Header': {'TimeserieId': '108', 'ObjectID': 'SummeSLPVerbrauchDayAhead', 'Unit': 'kWh', 'Granularity': 'DAY', 'Name': 'SLP consumption forecasts day ahead', 'LastUpdate': '2017-12-30T11:15:00.000Z'}, 'Values': {'Value': {'FromUTC': '2017-12-31T05:00:00.000Z', 'UntilUTC': '2018-01-01T05:00:00.000Z', 'TSO-Value': '100947866.161'}}}
print({**first['Header']}) # {'TimeserieId': '108', 'ObjectID': 'SummeSLPVerbrauchDayAhead', 'Unit': 'kWh', 'Granularity': 'DAY', 'Name': 'SLP consumption forecasts day ahead', 'LastUpdate': '2017-12-30T11:15:00.000Z'}
print({**first['Values']}) # {'Value': {'FromUTC': '2017-12-31T05:00:00.000Z', 'UntilUTC': '2018-01-01T05:00:00.000Z', 'TSO-Value': '100947866.161'}}
print({**getValueOrDefault(first['Values'])}) # {'FromUTC': '2017-12-31T05:00:00.000Z', 'UntilUTC': '2018-01-01T05:00:00.000Z', 'TSO-Value': '100947866.161'}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加