熊猫 - 可能使用两种不同的聚合函数来聚合两个列吗?

2024-09-22 10:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想按列进行分组:date、textA和textB-但是想对numberA应用“sum”,而对numberB应用“min”。

data = pd.read_table("file.csv", sep=",", thousands=',')
grouped = data.groupby(["date", "textA", "textB"], as_index=False)

…但是我看不出如何将两个不同的聚合函数应用到两个不同的列上? 一、 e.sum(numberA), min(numberB)


Tags: 文件csv文本readdatadatetable数字
1条回答
网友
1楼 · 发布于 2024-09-22 10:16:32

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

这也表明Pandas可以处理列名中的空格。我不确定问题的根源是什么,但是文字空间不应该造成问题。如果你想进一步调查

print(df.columns)

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

相关问题 更多 >