【发布时间】:2021-06-30 07:14:59
【问题描述】:
我有一个包含一列术语的数据框,例如:
In [2]: df = pd.DataFrame(
...: [
...: [123, ["D2334","D7645","D0938","D00001"]],
...: [223, ["A938","D00001","D0938"]],
...: [342, ["B983","D2334"]],
...: ],
...: columns=['ID', 'terms'],
...: ).set_index('ID')
In [3]: df
Out[3]:
terms
ID
123 [D2334, D7645, D0938, D00001]
223 [A938, D00001, D0938]
342 [B983, D2334]
我想为每个 ID 获取一个全局唯一的术语列表,即:
ID terms
123 ["D7645"]
223 ["A938"]
342 ["B983"]
例如,我想删除“D2334”,因为它存在于两个或多个 ID ...
【问题讨论】:
-
参见How much research 和Question Checklist。你需要“融化”或“爆炸”你的行,然后找到独特的元素。每一个都是一个简单的查找。
-
嗨 - 欢迎来到堆栈溢出! @Prune 确实建议了一些需要检查的好东西。一般来说,他们指出 Pandas 并不是真正为处理数据帧中的列表而设计的,因此使用
pd.explode可能会有所帮助。不过,这也可能会破坏你的记忆。 -
@MichaelDelgado 用户已更改 df 创建,但注意到有时列表被读取为字符串,具体取决于您导入它们的方式...
标签: python python-3.x pandas