【发布时间】:2021-03-23 00:01:15
【问题描述】:
我有一个包含 2 列的数据框:“VENDOR_ID”和“GL_Transaction_Description”。我想打印 'GL_Transaction_Description' 列中具有“VENDOR_ID”列中任何值的每一行。
| VENDOR_ID | GL_Transaction_Description |
|---|---|
| 123 | HELLO 345 |
| 456 | BYE 456 |
| 987 | THANKS 456 |
此处所需的输出将是“BYE 456”和“THANKS 456”。 我的代码是这样的:
for k in range(len(df)):
for j in range(len(df)):
if df['VENDOR_ID'][k] in df['GL_Transaction_Description'][j] and df['VENDOR_ID'][k] != 'nan':
print(df['GL_Transaction_Description'][j])
但是这个特定的数据帧计数超过 100k 行,并且使用嵌套的 for 循环运行需要很长时间。关于如何使其执行更快的任何想法?我读过使用 numpy 通常会使事情变得更快,但我无法实现它。
【问题讨论】:
-
我不明白你想要完成什么。您可以发布示例数据和预期结果吗?
-
我也不知道你想要完成什么,但 OP 应该寻找布尔掩码(如在 ashkangh awnser 中)和 apply 方法。
-
@CFreitas 对不起,我编辑了它
-
既然你使用了两个循环,我可以假设如果你有第三行:ID=789, GL="Hello 456",这个值也应该返回?
-
@CFreitas 是的,完全正确