假设我有以下数据框df1
:
A B C D
0 foo one 1 0
1 bar two 2 1
2 foo two 3 0
3 bar two 4 1
4 foo two 5 0
5 bar two 6 1
6 foo one 7 0
7 foo two 8 1
我想把它变成这样的数据框df2
:
A B C D
foo [one,two] [1,3,5,7,8] 0
bar [two] [2,4,6] 1
更确切地说:
按 分组
A
,即 columnA
是索引并且在每一行中 的值A
是唯一的列
B
并C
包含发生的值的聚合集。ForA = "foo"
,B
was 非此即彼"one"
,"two"
而 for"bar"
it is only"two"
。- 从逻辑上讲,这应该是一个集合,每个出现的值都恰好出现一次。它可能是 Python
set
,但我也在问最优雅的方式是用 pandas 来表示它
- 从逻辑上讲,这应该是一个集合,每个出现的值都恰好出现一次。它可能是 Python
列
D
不包含集合,因为 forfoo
D
始终为 0,forbar
始终为 1。如果索引值和列值之间始终存在 1:1 的关系,则该列不应包含集合。
我预计会有一个单线聚合 a la df1.groupby("A").aggregate_like_this()
,但到目前为止我还没有找到它。