我有两个单独的列表,每个列表包含n
个元素,一个是ID号,另一个是Pandas 数据帧.我将它们定义为id
和dfs
.dfs
中的数据帧具有与列A
、B
和C
相同的格式,但具有不同的数值.我已经把这两份 list 压缩在一起了:
df_groups = list(zip(id, dfs))
在这个列表中,我试图找到id
相同的任何实例,然后为这些嵌套框添加列A
和B
并合并为一个嵌套框.例如,我将使用以下代码:
id = ['a','b','c','a','d']
我拥有的相应数据帧可能如下所示:
dfs[0]
A B C
0 0 1
0 0 1
dfs[1]
A B C
0 1 1
0 1 1
dfs[2]
A B C
1 1 1
1 2 1
dfs[3]
A B C
5 6 1
11 8 1
dfs[4]
A B C
3 5 2
3 18 2
从上面可以看出,id[0]
和id[3]
是一样的.因此,我想创建一个新的元组列表,将dfs[0]['A']
和dfs[3]['A']
相加(列B
也是如此,删除重复的id
值.
因此,它应该看起来像这样:
id = ['a','b','c','d']
dfs[0]
A B C
5 6 1
11 8 1
dfs[1]
A B C
0 1 1
0 1 1
dfs[2]
A B C
1 1 1
1 2 1
dfs[3]
A B C
3 5 2
3 18 2
下面的方法可以删除重复的值id
,但我不太确定如何对dfs
进行列操作.当然,在运行以下代码之前,我需要首先添加列A
和B
:
from itertools import groupby
df_groups_b = ([next(b) for a, b in groupby(df_groups, lambda x: x[0])])
任何帮助都将不胜感激,谢谢!
编辑:为澄清起见,原始数据框中的C列将保持不变.在第一个元组元素匹配的情况下,来自相应数据帧的列C将相同.