如何将含列表元素的字典转换为展开式pandas.Series?求简便方法
简洁实现方法
直接利用pandas的explode()方法,一行代码就能搞定:
import pandas as pd data_dict = {'A': [1,3,3], 'B': [2,3,3]} result_series = pd.Series(data_dict).explode().astype(int)
说明:
- 先将字典转为pandas Series,此时每个索引对应的值是原字典中的列表;
explode()方法会把每个列表里的元素拆成单独行,同时保留原索引;astype(int)用于确保值为整数类型(部分pandas版本中explode后值会转为字符串,需手动转回)。
运行后得到的Series格式如下:
A 1 A 3 A 3 B 2 B 3 B 3 dtype: int64
如果不想用explode(),也可以用列表推导式生成索引和值来构造Series:
result_series = pd.Series( [value for key in data_dict for value in data_dict[key]], index=[key for key in data_dict for _ in data_dict[key]] )
内容的提问来源于stack exchange,提问作者DZN
相关产品推荐
相关产品推荐

