Pandas 熊猫-是否可以使用两种不同的聚合来聚合两列?
我正在加载一个csv文件,其中包含以下列: 日期,文本A,文本B,数字A,数字B 我想按列进行分组:date、textA和textB——但我想将“sum”应用于numberA,而将“min”应用于numberBPandas 熊猫-是否可以使用两种不同的聚合来聚合两列?,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) …但我不知道如何将两个不同的聚合函数应
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这对列名中的空格应该可以使用。这是一个老问题。请参阅