首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一种优雅的方法,可以更快地转化熊猫中的转座子。

一种优雅的方法,可以更快地转化熊猫中的转座子。
EN

Stack Overflow用户
提问于 2016-12-08 14:33:43
回答 1查看 335关注 0票数 1

我有一个名为pandas.Dataframea,其结构如下:

当我想得到DataFrame结构时,如下所示:

其中b就像a的转位。通过将a转换为b,我使用以下代码:

代码语言:javascript
运行
复制
id_uni = a['id'].unique()
b = pd.DataFrame(columns=['id']+[str(i) for i in range(1,4)])
b['id'] = id_uni

for i in id_uni:
    for j in range(7):
        ind = (a['id'] == i) & (a['w'] == j)
        med = a.loc[ind, 't'].values 
        if med:  
            b.loc[b['id'] == i, str(j)] = med[0]
        else:
            b.loc[b['id'] == i, str(j)] = 0

这个方法非常残酷,我只使用两个for-循环来获取从ab的所有元素。而且速度很慢。你有什么有效的方法来改进它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 14:35:41

您可以使用pivot

代码语言:javascript
运行
复制
print (df.pivot(index='id', columns='w', values='t'))
w    1    2   3
id             
0   54  147  12
1    1    0   1
代码语言:javascript
运行
复制
df1 = df.pivot(index='id', columns='w', values='t').reset_index()
df1.columns.name=None
print (df1)
   id   1    2   3
0   0  54  147  12
1   1   1    0   1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41041921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档