我正试图将元素从列表中分离出来,并将其分成不同的熊猫数据栏。本质上,我希望,对于每一个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发布于 2019-12-27 21:57:22
这将是一个相当长的数据格式,但是下面的内容应该可以工作:
首先,我们导入一些模块,并分配您的列,我假设您有完整的数据集,而没有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.3https://stackoverflow.com/questions/59505743
复制相似问题