我想从数据框中的一列与其他列中获取匹配项。下面是一个例子:
tableNameFrom tableNameJoin attributeName
1 film language [film.languageId, language.languageID]
2 inventory rental [invetory.inventoryId, rental.filmId]
在上面的例子中,我想用 attributeName 在 tablenameFrom 和 tablenameJoin 之间进行匹配。这里需要输出:
tableName attributeName
1 film languageId
2 language languageID
3 inventory inventoryId
4 rental filmId
最佳答案
我的解决方案只适用于 attributeName
列,因为从样本数据中可以得到所有需要输出的数据。
使用Series.str.split
首先通过 ,
,然后通过 DataFrame.stack
reshape 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
关于python - 如何将一列的值与数据框中的另一列匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55772841/