リストの要素をパンダデータフレームのさまざまな列に分離しようとしています。基本的に私はすべてのために、欲しいtenure
オプション-などの列、セミデタッチ、すなわち独立detached_price
、detached_cost
、detached_rooms
そしてdetached_asking
、その後、セミデタッチのために同じ、テラス、フラッツなど
p = [{'br8': [{'tenure': 'Detached',
'data': ['£1,248,554', '£571', '4.3', '£1,063,001']},
{'tenure': 'Semi-detached',
'data': ['£581,968', '£499', '3.3', '£587,188']},
{'tenure': 'Terraced', 'data': ['£520,725', '£516', '3.0', '£474,719']},
{'tenure': 'Flats', 'data': ['£424,898', '£516', '2.0', '£394,092']}]}]
これまで試しましたが、列が正しく解析されません。ここで私の目標を達成する方法について誰かアドバイスや方向性がありますか?
pd.DataFrame.from_records(p).T
私の希望する出力は次のとおりです。
detached_price, detached_cost, detached_rooms, detached_asking, semi_detached_price, etc etc
br8 £1,248,554, £571 , 4.3 , £1,063,001, £581,968
これはかなり長いデータフレームになりますが、以下は機能するはずです:
まず、いくつかのモジュールをインポートし、列を割り当てます。データの完全なセットがあり、NA値がないと仮定しています。その場合、質問、コスト、部屋をデータフレームにマッピングする方法を見つける必要があります。
from collections import defaultdict
from itertools import cycle
import pandas as pd
dfs = defaultdict(list)
for index,y in p[0].items():
for _ in y:
for key, value in _.items():
dfs[key].append(value)
dfs['index'] = index
df = pd.DataFrame(dfs).set_index('index')
df = df.explode('data')
status = cycle( ['price','cost','room','ask'])
df['status'] = [next(status) for stat in range(len(df))]
df['tenure'] = df['tenure'] + '_' + df['status']
final = pd.crosstab(df.index,df.tenure,values=df.data,aggfunc='first')
print(final.iloc[:,:4])
tenure Detached_ask Detached_cost Detached_price Detached_room
postcode?
br8 £1,063,001 £571 £1,248,554 4.3
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加