从字段信息添加记录

2024-06-10 03:51:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python数据框,其中包含演员的名字和他们参与的电影

诸如此类:

Name     Films

Adam     tt2488496,tt7653254,tt7653254,tt2488496
Jhon     tt1596363,tt1386588,tt6266538
Juan     tt7653254,tt2488496

我需要将他们参与的每部电影的演员分开

就这样,

Name     Films

Adam     tt2488496
Adam     tt7653254
Adam     tt7653254
Adam     tt2488496

我怎么做


Tags: 数据name电影名字juanadam演员films
2条回答

您可以这样做:

df = pd.DataFrame(df.Films.str.split(',').tolist(), index=df.Name).stack().reset_index()[['Name',0]]
df.columns = ['Name', 'Films']

   Name      Films
0  Adam  tt2488496
1  Adam  tt7653254
2  Adam  tt7653254
3  Adam  tt2488496
4  Jhon  tt1596363
5  Jhon  tt1386588
6  Jhon  tt6266538
7  Juan  tt7653254
8  Juan  tt2488496

另一种方法是使用pandasmelt function,如下所示:

# split the films column to many columns
df2 = df['films'].str.split(expand = True)

现在df2是

      0             1         2            3
0   tt2488496   tt7653254   tt7653254   tt2488496
1   tt1596363   tt1386588   tt6266538   None
2   tt7653254   tt2488496   None        None

将这些拆分的列与列名称连接起来

df3= pd.concat([df['Names'], df2], axis = 1)

   Names          0            1            2        3
0   Adam    tt2488496   tt7653254   tt7653254   tt2488496
1   John    tt1596363   tt1386588   tt6266538   None
2   John    tt7653254   tt2488496   None        None

使用pandas melt取消填充和放置不必要的柱和NaN'

final_result = pd.melt(df3, id_vars = ['Names'], value_vars = list(df2.columns)).drop(columns = ['variable']).dropna()

那是

   Names      value
0  Adam  tt2488496
1  John  tt1596363
2  John  tt7653254
3  Adam  tt7653254
4  John  tt1386588
5  John  tt2488496
6  Adam  tt7653254
7  John  tt6266538
9  Adam  tt2488496

相关问题 更多 >