[英]Python convert 3 lists to list of dictionaries with list name as key name
[英]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.