【问题标题】:Compare two lists and write for each item corresponding X column value比较两个列表并为每个项目写入对应的 X 列值
【发布时间】:2023-01-19 01:42:46
【问题描述】:

假设我有一个用户列表

resource = ['A', 'B', 'C']

然后我有一张桌子

| Date | Resource |
| -------- | -------- |
| 2022-11-01   | ['A', 'B', 'C']   |
| 2022-11-12   | ['A', 'B']   |
| 2022-11-13   | ['B', 'C']   |

我想要的是:为每个Resource A, B, C 列出Date

所以期望的输出可能是一本字典:

A: 2022-11-01
   2022-11-12
B: 2022-11-01
   2022-11-12
   2022-11-13

【问题讨论】:

  • 为什么字典里没有C
  • 使用嵌套循环。遍历数据框中的行,然后遍历资源。对于每个资源,将日期附加到相应的字典元素。 collections.defaultdict()dict.setdefault() 可用于创建字典元素。

标签: python pandas list


【解决方案1】:

您可以使用explode,然后使用groupbyagg(list),最后得到dictto_dict的结果。

dct = df.explode('Resource').groupby('Resource')['Date'].agg(list).to_dict()
print(dct)

输出:

{'A': ['2022-11-01', '2022-11-12'],
 'B': ['2022-11-01', '2022-11-12', '2022-11-13'],
 'C': ['2022-11-01', '2022-11-13']}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多