我想从数据框中的一列中获取匹配项。下面是一个示例:
tableNameFrom tableNameJoin attributeName
1 film language [film.languageId, language.languageID]
2 inventory rental [invetory.inventoryId, rental.filmId]
在上面的示例中,我想在tablenameFrom和tablenameJoin与attributeName之间进行匹配。这里是期望的输出:
tableName attributeName
1 film languageId
2 language languageID
3 inventory inventoryId
4 rental filmId
答案 0 :(得分:0)
我的解决方案仅适用于attributeName
列,因为来自示例数据的所有数据都需要输出。
先用,
使用Series.str.split
,然后用DataFrame.stack
重塑DataFrame
并用.
分割:
df1 = (df['attributeName'].str.split(', ', expand=True)
.stack()
.str.split('.', expand=True)
.reset_index(drop=True))
df1.columns = ['tableName','attributeName']
print (df1)
tableName attributeName
0 film languageId
1 language languageID
2 invetory inventoryId
3 rental filmId
编辑:
如果值是列表,请使用DataFrame
构造函数:
print (type(df.loc[1, 'attributeName']))
<class 'list'>
df1 = (pd.DataFrame(df['attributeName'].values.tolist())
.stack()
.str.split('.', expand=True)
.reset_index(drop=True))
df1.columns = ['tableName','attributeName']
print (df1)
tableName attributeName
0 film languageId
1 language languageID
2 invetory inventoryId
3 rental filmId