如何在一行代码中移除pandas DataFrame.to_dict输出的索引键?
如何将DataFrame统计描述的嵌套字典转为单层字典?
我有一个包含整数/浮点数的列表v(元素数量可超过500个),执行以下代码后:
np_arr = pd.DataFrame(np.around(np.array(v), 5)).describe().to_dict()
得到的是带列索引键的嵌套字典:
{0: {'count': 2.0, 'mean': 140950000.0, 'std': 0.0, 'min': 140950000.0, '25%': 140950000.0, '50%': 140950000.0, '75%': 140950000.0, 'max': 140950000.0}}
想直接把它转换成只包含统计指标的单层字典:
{'count': 2.0, 'mean': 140950000.0, 'std': 0.0, 'min': 140950000.0, '25%': 140950000.0, '50%': 140950000.0, '75%': 140950000.0, 'max': 140950000.0}
请问能不能在一行代码里直接实现这个转换?
解决方案:可以,两种方法直接实现
因为你是把一维数组转成了单列DataFrame,describe()返回的结果也是单列的DataFrame,只要把这一列提取为Series再转字典即可,一行代码就能完成:
方法1:直接取列索引对应的Series
np_arr = pd.DataFrame(np.around(np.array(v), 5)).describe()[0].to_dict()
方法2:用squeeze()压缩单列DataFrame为Series
np_arr = pd.DataFrame(np.around(np.array(v), 5)).describe().squeeze().to_dict()
原理说明
describe()返回的是一个DataFrame,列名对应原DataFrame的列索引(此处为0),行索引为统计指标;- 用
[0]或squeeze()可将单列DataFrame转换为以统计指标为索引的Series,调用to_dict()后直接得到以统计指标为键的单层字典。
内容的提问来源于stack exchange,提问作者micho
相关产品推荐
相关产品推荐

