从字段信息添加记录[重复]
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:如何从重复记录中仅提取某些字段作为另一个重复字段