Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于多个列中的匹配值聚合行?_Python_Pandas_Sqlite_Datatable - Fatal编程技术网

Python 如何基于多个列中的匹配值聚合行?

Python 如何基于多个列中的匹配值聚合行?,python,pandas,sqlite,datatable,Python,Pandas,Sqlite,Datatable,假设我有以下几点 d = {'A': [True,False,True,True,False,False],'B': ["Blue","Yellow","Blue","Red","Green","Yellow"], 'C': [1,2,3,4,5,6]} df = pd.DataFrame(data=d) print(df) A B C 0

假设我有以下几点

d = {'A': [True,False,True,True,False,False],'B': ["Blue","Yellow","Blue","Red","Green","Yellow"], 
'C': [1,2,3,4,5,6]}
df = pd.DataFrame(data=d)
print(df)

      A       B   C

0   True    Blue  1

1  False  Yellow  2

2   True    Blue  3

3   True     Red  4

4  False   Green  5

5  False  Yellow  6
我想将A和B的值相等的行聚合在一起,在C上求和。这将产生一个包含四行的新数据帧。作为一个例子,考虑行0和2。两行A的值相等,B的值相等。由于两行A和B的值相等,我希望将它们聚合到一行中,并将C的值更新为两行的C之和。表示第0行和第2行的新观察结果是(True,Blue,4)

注: 我想将作为解决方案提出的策略应用于一个大型数据集,在这个数据集中,基于硬编码条件进行聚合是不现实的(即如果a==x和B==y,则使用C的和进行聚合),因为x的值和y的值可能有数百或数千个不同的可能值。

我将使用
.groupby()
as:

df.groupby(['A', 'B']).sum()

这将获取列“A”和“B”的所有唯一组合,并对其余列求和,在本例中为“C”。

这似乎可行,但似乎会使某些A列值消失。我如何防止这种情况?此外,上述内容与df.groupby(['A','B'])['C'].sum()有何区别?当我使用此命令时,输出似乎略有不同。我不确定这将如何发生,您能否详细说明或给出一个示例
df.groupby(['A','B'])['C'].sum()
只指定要求和的列,因此返回一个Pandas
Series
,而不是
DataFrame
@math454
df['C']=df.groupby(['A',B'])transform(sum)