如何解决来自多个字典列表的DataFrame,其中键是索引,值是列数据
我正在尝试从字典列表中用熊猫创建一个DataFrame,如下所示:
[{'3600': '12','7600': '1212343'},{'0': 0.0,'3600': 0.0,'7200': 0.0,'10800': 0.0,'14400': 0.0,'18000': 0.0,'21600': 0.0,'25200': 116.93828280645994} .... ]
我的列是项目列表:["col1","col2" ...]
我想要的是字典的键作为索引,字典的值应填充列。在此示例中:
col1 col2
0 0/NaN 0.0
3600 12 0.0
7600 1212343 NaN
7200 NaN 0.0
10800 NaN 0.0
18000 NaN 0.0
21600 NaN 0.0
25200 NaN 116.93828280645994
因此,每个字典的值基本上表示列值。由于字典的大小可能不同,因此我需要添加NaN。
我以为我已经在这里(Create a Dataframe from list of Dictionaries)的帮助下找到了这样的东西:
columns = ["col","col2" ...]
df_data = mydataasabove
final_dict = defaultdict(list)
for data in df_data:
for key,value in data.items():
final_dict[key].append(value)
final_dict = dict(final_dict)
df = pd.DataFrame.from_dict(final_dict,orient='index',columns=columns)
但这给了我这样的df:
col1 col2
3600 12 0.0
7600 1212343 NaN
0 0 NaN
7200 0 NaN
10800 0 NaN
14400 0 NaN
18000 0 NaN
21600 0 NaN
25200 116.938 NaN
如您所见,这些值与我的列不正确对应。打印final_dict
的输出为:
{'3600': ['12',0.0],'7600': ['1212343'],'0': [0.0],'7200': [0.0],'10800': [0.0],'14400': [0.0],'18000': [0.0],'21600': [0.0],'25200': [116.93828280645994]}
我还尝试了Chainmap的一些方法:
df = pd.DataFrame.from_dict(ChainMap(*nec_data),columns=['col1'])
但我无法添加多列。
也许有人可以借给我??将不胜感激!预先感谢
解决方法
您可以将其读取为数据框并转置,然后在df.rename
和f-strings
的帮助下重命名以调整列名
pd.DataFrame(d).T.rename(columns=lambda x: f"col{x+1}")
col1 col2
3600 12 0
7600 1212343 NaN
0 NaN 0
7200 NaN 0
10800 NaN 0
14400 NaN 0
18000 NaN 0
21600 NaN 0
25200 NaN 116.938
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。