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

发布于 2022-02-19 00:53:23
IIUC,您希望添加行以获取所有可能的名称和别名作为行。
您可以获得所有唯一的名称,如set和reindex
out = (
df.set_index('name')
.reindex(set(df['name']).union(*df['alias']))
.reset_index()
)输出:
name alias
0 Juan [Perez, Juancho]
1 Perez NaN
2 Juancho NaN或将“别名”转换为重命名的DataFrame和concat。
out = (
pd.concat([df,
df['alias'].explode().rename('name').to_frame()
])
.sort_index(kind='stable')
)输出:
name alias
0 Juan [Perez, Juancho]
0 Perez NaN
0 Juancho NaN已使用的投入:
df = pd.DataFrame({'name': ['Juan'],
'alias': [['Perez', 'Juancho']]})https://stackoverflow.com/questions/71180588
复制相似问题