假设我有以下数据框(一列整数和一列整数列表)...
ID Found_IDs
0 12345 [15443, 15533, 3433]
1 15533 [2234, 16608, 12002, 7654]
2 6789 [43322, 876544, 36789]
Run Code Online (Sandbox Code Playgroud)
还有一个单独的ID列表......
bad_ids = [15533, 876544, 36789, 11111]
Run Code Online (Sandbox Code Playgroud)
鉴于此,并忽略df['ID']列和任何索引,我想查看bad_ids列中是否提到了列表中的任何 ID df['Found_IDs']。我到目前为止的代码是:
df['bad_id'] = [c in l for c, l in zip(bad_ids, df['Found_IDs'])]
Run Code Online (Sandbox Code Playgroud)
这有效,但bad_ids前提是列表比数据框长,并且对于真实数据集,bad_ids列表将比数据框短很多。如果我将bad_ids列表设置为只有两个元素......
bad_ids = [15533, 876544]
Run Code Online (Sandbox Code Playgroud)
我收到了一个非常流行的错误(我已经阅读了许多带有相同错误的问题)...
ValueError: Length of values does not match length of index
Run Code Online (Sandbox Code Playgroud)
我尝试将列表转换为系列(错误没有变化)。我还尝试False在执行理解行之前添加新列并将所有值设置为(再次没有更改错误)。
两个问题:
df['bad_id']列的代码(比 True/False 更有用)?的预期输出 …
我的熊猫数据框是:
FRUIT DATE PRICE CITY
Apple 11/5/2021 10 M
Apple 11/5/2021 11 N
Apple 11/5/2021 15 O
Apple 12/5/2021 14 A
Apple 12/5/2021 12 B
Apple 13/5/2021 8 C
Apple 13/5/2021 7 H
Apple 13/5/2021 6 K
orange 11/5/2021 13 L
orange 11/5/2021 12 J
orange 11/5/2021 33 H
Orange 11/5/2021 20 J
orange 12/5/2021 11 A
orange 12/5/2021 12 B
Orange 12/5/2021 29 C
orange 12/5/2021 20 M
Orange 13/5/2021 15 N
Banana 11/5/2021 3 A
Banana 11/5/2021 5 …Run Code Online (Sandbox Code Playgroud)