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

Posted

技术标签:

【中文标题】从字段信息添加记录[重复]【英文标题】:Add record from field information [duplicate] 【发布时间】:2020-07-24 18:00:19 【问题描述】:

我有一个 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

我该怎么做?

【问题讨论】:

使用df.assign(Films=df['Films'].str.split(',')).explode('Films') 【参考方案1】:

另一种方法是使用 pandas 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

使用 pandas melt 取消旋转并删除不必要的列和 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

【讨论】:

【参考方案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

【讨论】:

以上是关于从字段信息添加记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:如何从重复记录中仅提取某些字段作为另一个重复字段

BigQuery 从查询中创建重复记录字段

从 Advantage Database Server 10.1 表中删除重复行

重复字段的 BigQuery 记录

从数据表中列出某字段不重复的所有列的数据

如何根据某个字段从数据库表中删除重复项