首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据熊猫中另一列中重复的in将行转换为宽列

问根据熊猫中另一列中重复的in将行转换为宽列
EN

Stack Overflow用户
提问于 2021-12-22 18:02:21
回答 1查看 259关注 0票数 0

我的问题类似于this、this和this问题。

但仍然无法解决。

我有一个带有重复ids的数据

代码语言:javascript
复制
ID  Publication_type
1   Journal          
1   Clinical study   
1   Guideline        
2   Journal          
2   Letter           

我想把它写得更宽,但我不知道我会有多少种出版物--也许是2种,也许是20种。因此,我不知道我需要多少栏目宽。publication_type的宽列的最大大小不能超过每个id的类型数。

预期产出

代码语言:javascript
复制
 ID Publication_type1 Publication_type2 Publication_type 3    etc
 1  Journal           Clinical Study    Guideline
 2  Journal           Letter            NaN

现在,我不需要将相同的发布类型放入同一列中。我不需要在同一栏中的所有文章。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-22 18:11:32

您可以按ID分组,通过list进行聚合,然后根据结果创建一个新的DataFrame:

代码语言:javascript
复制
col = 'Publication_type'
new_df = pd.DataFrame(df.groupby('ID')[col].agg(lambda x: x.tolist()).tolist()).replace({None: np.nan})
new_df.columns = [f'{col}{i}' for i in new_df.columns + 1]
new_df['ID'] = df['ID'].drop_duplicates().reset_index(drop=True)

输出:

代码语言:javascript
复制
>>> df
  Publication_type1 Publication_type2 Publication_type3  ID
0           Journal    Clinical-study         Guideline   1
1           Journal            Letter               NaN   2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70453310

复制
相关文章

相似问题

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