繁体   English   中英

如何将具有多个索引的 pandas.core.series.Series object 转换为 pandas ZC699575A5E8AFD9EZFBCA1A 填充的所有列?

[英]How to convert pandas.core.series.Series object with Multiple index to a pandas Dataframe with all columns filled?

我有一个具有多个索引的 pandas 系列,例如此图像“target”、“Lastnewjob”、“experienceGroup”。 这是 pandas.core.series.series 类型。 我想将它转换为一个数据框(第二张图片),其中“experienceGroup”值将是列名,“target”、“Lastnewjob”仍然是列。

在此处输入图像描述

我想看的Dataframe

在此处输入图像描述

使用 groupby 获取系列的代码。

Job=df.groupby(['target','last_new_job'])['experienceGroup'].value_counts()
Job.unstack()

-- Pandas系列

添加更多细节以便您可以创建 Job- pandas 系列实际上是由 groupBy 和 value_counts()

details={
"experienceGroup":['0-5','6-12','13-19','20 & above','0-5','6-12','13-19','20 & above'],
"last_new_job":[1,'>4',2,"never",4,3,3,4],
"target":[1.0,0.0,1.0,0.0,1.0,0.0,1.0,0.0],
"experience":[1,7,15,20,3,8,17,25]  }   
 df5 = pd.DataFrame(details) 
 df5  

要创建 Pandas 系列并通过取消堆叠显示它 - 使用以下代码

Job=df5.groupby(['target','last_new_job'])['experienceGroup'].value_counts()
Job.unstack()

我不知道评论是否为您回答了足够详细的问题,尽管@mustnot 是对的,您可以使用 reset_index。 这是我重新创建 dataframe 的代码,然后是解决方案:

arrays = [
   [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], 
   [1,2,3,4,'>4','never',1,2,3,4,'>4','never']
]

tuples = list(zip(*arrays))
experienceGroup = {
    '0-5': [2127, 535, 152, 87, 87, 1068, 1146, 278, 61, 52, 40, 500],
    '6-12': [2172, 833, 292, 323, 572, 411, 653, 282, 89, 94, 171, 194],
    '13-19': [911, 444, 184, 201, 711, 109, 169, 59, 51, 45, 160, 31],
    '20 & above': [693, 386, 164, 190, 1317, 118, 148, 80, 30, 36, 225, 13],    
}
index = pd.MultiIndex.from_tuples(tuples, names=['target', 'last_new_job'])
df = pd.DataFrame(data=experienceGroup, index=index)
df

然后我的数据框看起来像你的多索引:

在此处输入图像描述

要删除多索引,您需要做的就是:

df.reset_index(inplace=True)
df

然后你得到你正在寻找的单一索引 dataframe :

在此处输入图像描述

如果这回答了您的问题,请接受,以便每个人都知道这已得到解答,否则请告诉我们您是否仍在苦苦挣扎,以便我们提供帮助!

**我已经解决了列的多索引和分类索引以获得所需的结果。 **

  1. 使用 groupby().Value_counts() 创建了 pandas.series object

  2. 使用 pd.series() object.Unstack() 将其保存为 DataFrame。

  3. 获得的数据框有多个索引和列作为分类索引。

  4. 现在将分类列索引转换为列表

  5. 现在在 dataframe 代码上使用重置索引:

    #第2步
    Job=df5.groupby(['target','last_new_job'])['experienceGroup'].value_counts().unstack() #step 4 Job.columns=Job.columns.tolist() #step 5 Job.reset_index( inplace=True) 工作在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM