如何将元组键值对的字典数据导入指定结构的空Pandas DataFrame?
问题原因
你直接将字典传入pd.DataFrame()时,pandas会默认把字典的键当作列名、值当作对应列的行数据,但你的字典键是元组,无法匹配指定的列名,所以最终只显示列名却没有导入数据。
正确实现方法
需要先把字典的每个键值对转换成符合列顺序的行数据,再构建DataFrame,有两种简洁的实现方式:
方法1:列表推导式转换数据后创建DataFrame
import pandas as pd result_dict = {('ABE2', '170xi iii plus'): (1, '1178.55', 1178.55), ('ABE2', '170xi4+'): (1, '2844.12', 2844.12), ('ABE2', '1900gsr-1'): (30, '115.0', 3450.0)} # 将字典的键(元组)和值(元组)拼接成每行数据 row_data = [list(key) + list(value) for key, value in result_dict.items()] # 用转换后的数据创建DataFrame df_test = pd.DataFrame(row_data, columns=['location_sitecode', 'model_name', 'total_quantity', 'cost_per_device', 'total_cost'])
方法2:使用from_records方法直接构建
import pandas as pd result_dict = {('ABE2', '170xi iii plus'): (1, '1178.55', 1178.55), ('ABE2', '170xi4+'): (1, '2844.12', 2844.12), ('ABE2', '1900gsr-1'): (30, '115.0', 3450.0)} df_test = pd.DataFrame.from_records( [list(key) + list(value) for key, value in result_dict.items()], columns=['location_sitecode', 'model_name', 'total_quantity', 'cost_per_device', 'total_cost'] )
执行后df_test就会包含所有目标数据,列顺序也和你定义的一致。
内容的提问来源于stack exchange,提问作者Wolfy
相关产品推荐
相关产品推荐

