小编MDR*_*MDR的帖子

将列表中找到的 ID 添加到 Pandas 数据框中的新列

假设我有以下数据框(一列整数和一列整数列表)...

      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在执行理解行之前添加新列并将所有值设置为(再次没有更改错误)。

两个问题:

  1. 如何让我的代码(如下)适用于比数据框短的列表?
  2. 我如何获得将找到的实际 ID 写回df['bad_id']列的代码(比 True/False 更有用)?

的预期输出 …

python dataframe python-3.x pandas

12
推荐指数
1
解决办法
2202
查看次数

过滤数据框行以返回每种水果的前两天,从日期开始

我的熊猫数据框是:

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)

python pandas

0
推荐指数
1
解决办法
61
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

python-3.x ×1