繁体   English   中英

如何在 python 中将字典列表的列表安排为键名为 header 的表

[英]how to arrange list of lists of dictionaries as a table with key name as header in python

我想创建一个数据框,如我问题的最后一部分所示。 解释如下,我有这个:

results
df = pd.DataFrame(results)
df

output:

results:
farm_power_output   farm_unwaked_power_output   farm_wind_direction flow_case_id    id  measurement_set_id  met_mast_results    simulation_id   timestamp         turbine_results
0   80348100.0  81027200.0  2.63545 00001WS11.6dir151.0 34875   None    [{'air_density': 1.20526, 'id': 28962, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631357, 'insta...
1   80200300.0  81226300.0  3.14159 00008WS11.7dir180.0 34876   None    [{'air_density': 1.20526, 'id': 28963, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631369, 'insta...
2   62370800.0  67676300.0  3.03687 00006WS10.1dir174.0 34877   None    [{'air_density': 1.20526, 'id': 28964, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631381, 'insta...
3   40375100.0  43515300.0  2.56563 00000WS8.6dir147.0  34878   None    [{'air_density': 1.20526, 'id': 28965, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631393, 'insta...
4   79935100.0  81509900.0  2.82743 00004WS12.4dir162.0 34879   None    [{'air_density': 1.20526, 'id': 28966, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631405, 'insta...
5   73799100.0  77291300.0  3.10669 00007WS10.8dir178.0 34880   None    [{'air_density': 1.20526, 'id': 28967, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631417, 'insta...
6   81055200.0  81348000.0  2.70526 00003WS12.0dir155.0 34881   None    [{'air_density': 1.20526, 'id': 28968, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631429, 'insta...
7   54173400.0  66155700.0  2.89725 00005WS10.0dir166.0 34882   None    [{'air_density': 1.20526, 'id': 28969, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631441, 'insta...
8   71949100.0  74568800.0  2.67035 00002WS10.6dir153.0 34883   None    [{'air_density': 1.20526, 'id': 28970, 'instan...   3zznris223wxkeimi9jrkg2n    None    [{'air_density': 1.20526, 'id': 631453, 'insta...

我这样做了:

df1 = df.turbine_results
df1

我懂了,

df1 : 
0    [{'air_density': 1.20526, 'id': 631357, 'insta...
1    [{'air_density': 1.20526, 'id': 631369, 'insta...
2    [{'air_density': 1.20526, 'id': 631381, 'insta...
3    [{'air_density': 1.20526, 'id': 631393, 'insta...
4    [{'air_density': 1.20526, 'id': 631405, 'insta...
5    [{'air_density': 1.20526, 'id': 631417, 'insta...
6    [{'air_density': 1.20526, 'id': 631429, 'insta...
7    [{'air_density': 1.20526, 'id': 631441, 'insta...
8    [{'air_density': 1.20526, 'id': 631453, 'insta...
Name: turbine_results, dtype: object

但我想要这个,

turbine_results : 
air_density     id    instance_id        power    rotor_wind_speed  turbulence_intensity    unwked_power    wake_speed_factor
1.20526       631357        3         6752270.0   11.5226         0.1                   6752270.0       1.0
1.20526       631358        6         6751830.0   11.5196         0.2                   6752270.0       0.999739
1.20526       631369        3         6768860.0   11.6919         0.3                   6768860.0       1.0
1.20526       631370        2         6768600.0   11.6877         0.4                   6768600.0       0.99645
1.20526       631381        3         5639690.0   10.0387         0.5                   5639690.0       1.0
1.20526       631382        2         5658480.0   10.0382         0.6                   5658480.0       0.999954
1.20526       631393        3         3626270.0   8.53487         0.7                   3626270.0       1.0
1.20526       631394        6         3628910.0   8.53459         0.8                   3628910.0       0.99967
1.20526       631405        3         6792490.0   12.3093         0.9                   6792490.0       1.0

您应该能够使用包含字典的第一个列表创建您的 dataframe,然后使用剩余的字典列表创建 append 到已经存在的 dataframe

这是您使用一些示例数据编辑问题后的代码 - 我希望它能实现您想要做的事情

import pandas as pd

sample_dict = {"a" : 1, "b" : 2, "c" : 3,"d" : 4,}
sample_dict_lst = [sample_dict, sample_dict, sample_dict, sample_dict, sample_dict]
df = pd.DataFrame({'key': [sample_dict_lst, sample_dict_lst, sample_dict_lst, sample_dict_lst]})

reduced_df = df.key          
                   
for i, lst in enumerate(reduced_df):
    if i == 0:
        result_df = pd.DataFrame.from_dict(lst)
    else:
        result_df = pd.concat([result_df, pd.DataFrame.from_dict(lst)])
        
print(result_df)
>>> pd.DataFrame([{'a': 1, 'b': 2}, {'a': -1, 'b': 0}])
   a  b
0  1  2
1 -1  0

你可以用你的数据来做到这一点。 祝你好运!

在你的情况下,也许pd.DataFrame([d for d in row for row in dataset])因为你似乎有字典列表的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM