程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

将熊猫数据框转换为新格式的有效方法

发布于2020-01-16 22:12     阅读(1138)     评论(0)     点赞(11)     收藏(1)


我目前正在使用现有的新数据框。

假设我们的数据框如下所示

tt2 = pd.DataFrame(columns=['test','class'])

test = [1,2,3,4,1,2,3,4,4]
test_class = ['a','b','c','d','b','c','a','d','a']

tt2['test'] = test
tt2['class'] = test_class


    test class
0     1     a
1     2     b
2     3     c
3     4     d
4     1     b
5     2     c
6     3     a
7     4     d
8     4     a

然后,我想将此结构转换为

test class1 class2 class3
 1     a       b
 2     b       c
 3     c       a
 4     d       d      a

因此,我们基于唯一键值的最大元素数生成新列。这里“ 4”有3个类别,因此我们建立了3个新索引

之后,填写类似堆栈的数字。

我尝试使用groupby方法。但是仍然不知道如何正确转换。


解决方案


这对您有用吗?

使用groupby,apply和系列字符串方法,并使用expand设置:

tt2 = pd.DataFrame(columns=['test','class'])

test = [1,2,3,4,1,2,3,4,4]
test_class = ['a','b','c','d','b','c','a','d','a']

tt2['test'] = test
tt2['class'] = test_class

result_df. = tt2.groupby('test').apply(lambda x: "-".join(x['class'])).str.split('-', expand=True)
result_df.columns = ['class' + str(int(col)+1) for col in result_df.columns]
print result_df

这使

     class1 class2 class3
test                     
1         a      b   None
2         b      c   None
3         c      a   None
4         d      d      a


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/226450/b2791659d6d15e6ab22d/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)