【发布时间】:2020-04-12 08:56:40
【问题描述】:
我有一个 csv 文件,我需要在其中对列进行一些操作而不指定列值。
输入的csv(df)如下:
weather speed type cal_A cal_B
good 0-3 cold 12 10
good 0-3 cold 21 7
good 0-3 cold 31 5
good 0-3 cold 17 1
good 3-5 cold 19 17
bad 0-3 hot 15 4
bad 6-9 hot 21 13
bad 6-9 hot 15 7
bad 6-9 cold 21 4
rainy 0-3 cold 14 7
rainy 5-8 cold 21 10
rainy 5-8 cold 2 3
rainy 5-8 cold 18 16
在这个 csv 中,我需要通过对列天气、类型和速度进行分组来划分名为 cal_A、cal_B 的列,然后找到最小值、最大值和平均值,并将它们作为单独的列。
最小值、最大值和平均值是在 cal_A 和 cal_B 列相除后计算的。
输出文件如下:
weather speed type cal_A/cal_B(min) cal_A/cal_B(max) cal_A/cal_B(mean)
good 0-3 cold 1.2 17
good 3-5 cold 1.11 1.11
bad 0-3 hot 3.75 3.75
bad 6-9 hot 1.61 2.14
bad 6-9 cold 5.25 5.25
rainy 0-3 cold 2 2
rainy 5-8 cold 0.6 2.1
我试过的代码如下:
df=df.groupby(['weather','speed','type'],as_index=False).min().eval('cal_A/cal_B(min)=cal_A/cal_B')
df=df.groupby(['weather','speed','type'],as_index=False).max().eval('cal_A/cal_B(max)=cal_A/cal_B')
上面的代码对天气、速度和类型列进行分组,然后从计算中提供最小值和值,但是这段代码没有为我提供预期的输出。
【问题讨论】:
-
为了确保我理解正确,
minimum应该等于cal_A的最小值除以cal_B的最小值,maximum和mean相同? -
将 cal_A 和 cal_B 列分开,然后考虑最小值、最大值和平均值。@Ivan Libedinsky
标签: python-3.x pandas group-by pandas-groupby aggregation