如何用Pandas为已有DataFrame添加顶级列并实现子列值对齐?
给已有DataFrame添加多级列(顶级列+子列)
原代码的问题在于pd.DataFrame([med], columns=cols)把整个med DataFrame当成了单行数据的元素,导致每个单元格存储的是完整的Series,而非单个数值,自然无法对齐。
下面是两种直接可行的解决方案:
方法一:直接修改原DataFrame的列索引
如果不需要保留原med的结构,直接修改它的列索引即可:
import pandas as pd med = pd.DataFrame({ 'Gold':[54, 37, 37, 14, 19, 19, 9, 10, 2], 'Silver': [42, 40, 26, 16, 22, 14, 8, 9, 9], 'Bronze': [41, 49, 29, 32, 33, 12, 9, 7, 11], }) # 把原列名嵌套到顶级列'Masculine'下 med.columns = pd.MultiIndex.from_product([['Masculine'], med.columns])
方法二:用pd.concat创建新的多级列DataFrame
如果需要保留原med不变,用pd.concat包装即可自动生成多级列:
import pandas as pd med = pd.DataFrame({ 'Gold':[54, 37, 37, 14, 19, 19, 9, 10, 2], 'Silver': [42, 40, 26, 16, 22, 14, 8, 9, 9], 'Bronze': [41, 49, 29, 32, 33, 12, 9, 7, 11], }) # 以字典形式传入,键作为顶级列名,值作为子列对应的DataFrame df = pd.concat({'Masculine': med}, axis=1)
两种方法最终得到的结果一致:顶级列为Masculine,下属Gold、Silver、Bronze三个子列,所有数值和原med完全对齐。
内容的提问来源于stack exchange,提问作者Froz
相关产品推荐
相关产品推荐

