如何获取datafram中一列与另一列的值的匹配

2024-05-18 10:09:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从数据帧中的一列和其他列中获取匹配。下面是一个例子:

  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

Tags: 数据language例子inventoryfilmrentalattributenamelanguageid
1条回答
网友
1楼 · 发布于 2024-05-18 10:09:01

我的解决方案只处理attributeName列,因为从示例数据中可以得到输出所需的所有数据。你知道吗

使用^{}首先按,,然后按^{}重塑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

相关问题 更多 >