python - 如何在数据框中的列之间进行匹配并保留另一列

标签 python python-3.x pandas postgresql dataframe

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

  date        tableNameFrom   tableNameJoin   attributeName
1 29-03-2019  film            language        [film.languageId, language.languageID]
2 30-03-2019  inventory       rental          [invetory.inventoryId, rental.filmId]

在上面的例子中,我想用 attributeName 在 tablenameFrom 和 tablenameJoin 之间进行匹配。但是,我想保留 date 列。这里需要输出:

  date        tableName    attributeName
1 29-03-2019  film         languageId
2 29-03-2019  language     languageID
3 30-03-2019  inventory    inventoryId
4 30-03-2019  rental       filmId

知道我该怎么做吗?谢谢。

最佳答案

这可能不是您想要的,但会为给定的数据帧产生预期的输出:

(df.set_index('date').attributeName.apply(pd.Series).stack()
 .reset_index().drop('level_1', axis=1).set_index('date')[0]
 .str.split('.').apply(pd.Series)
 )

它忽略 tableNameFrometableNameJoin 并假定它们在 attributeName 中给出。

+----+------------+----------+-------------+
|    |       date |        0 |           1 |
|----+------------+----------+-------------|
|  0 | 29-03-2019 |     film |  languageId |
|  1 | 29-03-2019 | language |  languageID |
|  2 | 30-03-2019 | invetory | inventoryId |
|  3 | 30-03-2019 |   rental |      filmId |
+----+------------+----------+-------------+

关于python - 如何在数据框中的列之间进行匹配并保留另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787042/

相关文章:

javascript - flask : How to pass JSON to javascript file?

python - 检查seaborn散点图函数是否正在采样数据

python - 如何通过并行迭代两个列表来创建两个列表的元素对?

python - 检查单词之间的编辑次数

python - Groupby 和值计数类别

python - 在 Azure Python SDK 中创建自动化帐户的错误请求

python - Tkinter 和绑定(bind)到 ListboxSelect 事件的两个列表框出现意外行为

python-3.x - 使用@rpath/libpoppler.71.dylib 找不到图像

python - 如何将系列索引转换为两列作为 DataFrame

python - 根据条件迭代求和列