从列表字典生成DataFrame后,提取列中元组的数值
提取DataFrame元组中的数值部分
给定字典生成的DataFrame中,各列元素为包含类别名和数值的元组,以下两种方法可提取其中的数值部分:
方法一:对已生成的DataFrame做转换
先按原代码生成DataFrame,再用applymap遍历每个单元格提取元组的数值项:
import pandas as pd d={0:[('cat_a', 15),('cat_b', 12)], 1: [('cat_a',10),('cat_b',7)], 2:[('cat_a', 12),('cat_b', 8)]} # 原代码生成含元组的DataFrame data = [l for l in d.values()] df=pd.DataFrame(data,columns=['cat_a','cat_b']) # 提取元组中的数值 df = df.applymap(lambda x: x[1])
方法二:生成DataFrame前预处理数据(更高效)
在构造数据列表时直接提取元组的数值,避免后续转换操作:
import pandas as pd d={0:[('cat_a', 15),('cat_b', 12)], 1: [('cat_a',10),('cat_b',7)], 2:[('cat_a', 12),('cat_b', 8)]} # 提前提取数值,生成纯数值列表 data = [[t[1] for t in lst] for lst in d.values()] df=pd.DataFrame(data,columns=['cat_a','cat_b'])
两种方法最终得到的DataFrame均为:
cat_a cat_b 0 15 12 1 10 7 2 12 8
内容的提问来源于stack exchange,提问作者Tranquil Oshan
相关产品推荐
相关产品推荐

