我有一个名为a
的数据框,它具有以下结构:
df = pd.DataFrame({
'id': [1, 2, 3],
'numbers_a': [[2, 3, 5], [1, 2, 4], [4, 6, 9]],
'numbers_b': [[2, 1, 3], [10, 11], [4, 5, 7]]
})
df
| id | numbers_a | numbers_b |
|----|-----------|-----------|
| 1 | [2, 3, 5] | [2, 1, 3] |
| 2 | [1, 2, 4] | [10, 11] |
| 3 | [4, 6, 9] | [4, 5, 7] |
我想向此数据帧添加一个名为result
的新列,如果TRUE
中的任何一个值位于numbers_b
中,则应为numbers_a
。因此,以下应该是结果数据帧:
| id | numbers_a | numbers_b | result |
|----|-----------|-----------|--------|
| 1 | [2, 3, 5] | [2, 1, 3] | TRUE |
| 2 | [1, 2, 4] | [10, 11] | FALSE |
| 3 | [4, 6, 9] | [4, 5, 7] | TRUE |
我尝试使用下面的代码段,但所有值都为FALSE:
a['result'] = pd.DataFrame(a.numbers_b.tolist()).isin(a.numbers_a).any(1).astype(bool)
我该如何解决?预先感谢。
答案 0 :(得分:2)
尝试设置交集:
// Properties.Resources.MyExeFile - Binary file located in application resources
using var module = ModuleDefMD.Load(Properties.Resources.MyExeFile);
if (module.IsILOnly)
{
module?.Write(Path.Combine(CurrDir, "Build.exe"));
}
这对重载的pandas布尔运算符非常有效,尽管它并不是特别出色。
另一种方法涉及列表理解:
df['numbers_a'].map(set) & df['numbers_b'].map(set)
0 True
1 False
2 True
dtype: bool