【发布时间】:2021-03-03 23:03:12
【问题描述】:
我正在学习 pandas,但有一个无法解决的问题。
我有一个大约 200k 行的数据框,是 id 的列之一。它看起来像这样:
call_id id utterance channel seq sentiment
0 uuid str str str float
我还有一个具有这种形状的元组列表:
(id, pattern_id)
tup = [('c638b6fe-0939-4a3b-a7f0-c9b315da1e5d', '56e1542f-5d68-4fe0-a85a-cce8ae1f0b94'),...]
作为这些元素的字符串。
我想将数据帧每一行中的 id 与元组列表中的 id 进行比较,如果匹配,请将匹配元组的 pattern_id 添加到数据帧的新列中。 元组列表的长度不等于数据框中的行数。
我尝试了不同的方法,但其中任何一种都可以正常工作。 看来我可以进行比较,例如:
matches = []
for row in df.itertuples():
for t in tuples:
if row.id == t[0]:
matches.append(t[1])
我得到了我必须得到的比赛。但如果我添加一个 else 比较似乎不起作用:
matches = []
for row in df.itertuples():
for t in tuples:
if row.id == t[0]:
matches.append(t[1])
else:
matches.append("nan")
如果有任何帮助理解,我将不胜感激:
- 为什么这不起作用
- 如何将每行的比较结果添加到数据框中的新列中。
谢谢!
【问题讨论】:
-
请发布数据框示例和包含元组列表的示例。
-
我已添加信息
标签: python pandas dataframe tuples