【发布时间】:2022-01-23 15:37:06
【问题描述】:
给定如下的 DataFrame:
col_a col_b col_c
0 0 1 a
1 0 2 b
2 0 3 c
3 1 4 d
4 1 5 e
5 1 6 f
6 2 7 g
7 2 8 h
8 2 9 i
我正在寻找一种创建子列表列表的方法,其中每个子列表包含与 col_a 值相对应的 col_b 和 col_c 值的对元组。在这个例子中,所需的输出是:
[[(1, 'a'), (2, 'b'), (3, 'c')],
[(4, 'd'), (5, 'e'), (6, 'f')],
[(7, 'g'), (8, 'h'), (9, 'i')]]
即第一个子列表包含三个元组,其中col_a 等于0,依此类推。
我设法使用这样的 for 循环来做到这一点:
main_list = []
for i in df["col_a"].unique():
small_df = df.loc[df["col_a"] == i]
sublist = small_df.drop(columns=["col_a"]).to_records(index=False).tolist()
main_list.append(sublist)
但是这个解决方案非常笨重,并且需要很长时间才能在大型 df 上执行。我想知道是否有更快的方法来做到这一点?
【问题讨论】: