从字段信息中添加记录[重复]

问题描述 投票:0回答:2

我在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

我该怎么办?

python pandas dataframe
2个回答
2
投票

另一种方法是通过使用熊猫melt 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

使用大熊猫融化来旋转并放置不必要的列和Nans'

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

0
投票

您可以这样操作:

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
© www.soinside.com 2019 - 2024. All rights reserved.