gpt4 book ai didi

python - 从组外收集值列表

转载 作者:行者123 更新时间:2023-12-04 00:16:03 26 4
gpt4 key购买 nike

我有这个 Pandas 数据框:

df 

ID Value
0 1 0.33
1 1 0.91
2 1 0.28
3 2 0.36
4 2 0.50
5 3 0.47
6 3 0.98
7 3 0.34
8 3 0.37

我想按 ID 分组并创建 2 个新列:

  1. “values_in”是 ID 值列的列表
  2. “values_out”是其他 ID 的值列列表

输出将是这样的:


ID values_in values_out
0 1 [0.33, 0.91, 0.28] [0.36, 0.5, 0.47, 0.98, 0.34, 0.37]
1 2 [0.36, 0.5] [0.33, 0.91, 0.28, 0.47, 0.98, 0.34, 0.37]
2 3 [0.47, 0.98, 0.34, 0.37] [0.33, 0.91, 0.28, 0.36, 0.5]

如果我使用经典的 groupby 会自动排除 values_out,我该怎么做?

仅供引用:我不关心列表中的顺序。

最佳答案

一种使用matmul的方法:

new_df = df.groupby("ID")["Value"].apply(list).reset_index(name="values_in")
new_df["values_out"] = new_df["values_in"] @ (1 - np.eye(new_df.shape[0], dtype=int))
print(new_df)

输出:

   ID                 values_in                                  values_out
0 1 [0.33, 0.91, 0.28] [0.36, 0.5, 0.47, 0.98, 0.34, 0.37]
1 2 [0.36, 0.5] [0.33, 0.91, 0.28, 0.47, 0.98, 0.34, 0.37]
2 3 [0.47, 0.98, 0.34, 0.37] [0.33, 0.91, 0.28, 0.36, 0.5]

关于python - 从组外收集值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63703627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com