Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Pandas 熊猫-是否可以使用两种不同的聚合来聚合两列?_Pandas_Aggregation - Fatal编程技术网

Pandas 熊猫-是否可以使用两种不同的聚合来聚合两列?

Pandas 熊猫-是否可以使用两种不同的聚合来聚合两列?,pandas,aggregation,Pandas,Aggregation,我正在加载一个csv文件,其中包含以下列: 日期,文本A,文本B,数字A,数字B 我想按列进行分组:date、textA和textB——但我想将“sum”应用于numberA,而将“min”应用于numberB data = pd.read_table("file.csv", sep=",", thousands=',') grouped = data.groupby(["date", "textA", "textB"], as_index=False) …但我不知道如何将两个不同的聚合函数应

我正在加载一个csv文件,其中包含以下列: 日期,文本A,文本B,数字A,数字B

我想按列进行分组:date、textA和textB——但我想将“sum”应用于numberA,而将“min”应用于numberB

data = pd.read_table("file.csv", sep=",", thousands=',')
grouped = data.groupby(["date", "textA", "textB"], as_index=False)
…但我不知道如何将两个不同的聚合函数应用于两个不同的列?
也就是说,
sum(numberA),min(numberB)

agg
方法可以接受dict,在这种情况下,键指示应用函数的列:

grouped.agg({'numberA':'sum', 'numberB':'min'})

比如说,

import numpy as np
import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
                         'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three',
                         'two', 'two', 'one', 'three'],
                   'number A': np.arange(8),
                   'number B': np.arange(8) * 2})
grouped = df.groupby('A')

print(grouped.agg({
    'number A': 'sum',
    'number B': 'min'}))
屈服

     number B  number A
A                      
bar         2         9
foo         0        19
这也表明熊猫可以处理列名中的空格。我不确定问题的根源是什么,但文字空格不应该造成问题。如果你想进一步调查此事

print(df.columns)

在不重新指定列名的情况下,将显示名称的
repr
。例如,列名中可能有一个看起来像空格(或其他字符)但实际上是
u'\xa0'
(不间断空格)的难以看到的字符。

谢谢您的快速响应。我已经试过了,但是我得到了一个“KeyError:u'no item named KeyError:u'no item named Number a'”也许这与我的列名中有空格有关?我将进行实验,看看这是否会有不同。哇,您也可以这样做:
g.agg({'a':['min','max'],'B':'mean'})
只是添加了一个“names”参数来读取表,并通过删除列名中的任何空格来重命名我的所有列。这就是诀窍——我以前尝试过的方法(安迪建议的)现在可以使用了。@marcusadamski这对列名中的空格应该可以使用。这是一个老问题。请参阅