首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从列中的元素创建新行

问从列中的元素创建新行
EN

Stack Overflow用户
提问于 2022-02-18 22:30:17
回答 1查看 28关注 0票数 0

我有一个dataframe,它有两个字段,名称和别名。如果出现一个或多个别名,则必须为每个别名创建一个新行,并将name字段替换为别名字段。我有一个类似于第一个表的东西,它看起来应该像第二个表,使用熊猫在python中。提前感谢

​

​

EN

回答 1

Stack Overflow用户

发布于 2022-02-19 00:53:23

IIUC,您希望添加行以获取所有可能的名称和别名作为行。

您可以获得所有唯一的名称,如set和reindex

代码语言:javascript
复制
out = (
 df.set_index('name')
   .reindex(set(df['name']).union(*df['alias']))
   .reset_index()
 )

输出:

代码语言:javascript
复制
      name             alias
0     Juan  [Perez, Juancho]
1    Perez               NaN
2  Juancho               NaN

或将“别名”转换为重命名的DataFrame和concat。

代码语言:javascript
复制
out = (
 pd.concat([df,
            df['alias'].explode().rename('name').to_frame() 
          ])
   .sort_index(kind='stable')
)

输出:

代码语言:javascript
复制
      name             alias
0     Juan  [Perez, Juancho]
0    Perez               NaN
0  Juancho               NaN

已使用的投入:

代码语言:javascript
复制
df = pd.DataFrame({'name': ['Juan'],
                   'alias': [['Perez', 'Juancho']]})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71180588

复制
相关文章

相似问题

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