0

我正在尝试对 csv 中的数据组执行相对简单的计算。我有一种感觉,我需要使用的功能包含在集合库中,但已经多次阅读该库的文档(http://docs.python.org/2/library/collections.html)。我无法弄清楚如何使用这个库来实现我想要的输出。也许还有另一种方式?

我需要(有效地)做的是;为每个Uniqueclasselement组确定第 4 列中的最大数字(基于零的列引用。)然后为该组中的每一行计算此“大”数字与该行中第 4 列的数字之间的差异。对于其中的前三行Uniqueclasselement16 15& 2(分别为 111 减去 105,96 和 109)。然后我需要将此数字添加到列中的数字2并将结果附加到此 csv 中的新列。

示例数据:

data,Uniqueclasselement1,52,data,105
data,Uniqueclasselement1,58,data,96
data,Uniqueclasselement1,59,data,109
data,Uniqueclasselement1,42,data,111
data,Uniqueclasselement1,32,data,107
data,Uniqueclasselement1,49,data,105
data,Uniqueclasselement1,50,data,104
data,Uniqueclasselement1,51,data,89
data,Uniqueclasselement1,79,data,99
data,Uniqueclasselement2,69,data,105
data,Uniqueclasselement2,58,data,96
data,Uniqueclasselement2,88,data,109
data,Uniqueclasselement2,84,data,111
data,Uniqueclasselement2,90,data,107
data,Uniqueclasselement2,55,data,105
data,Uniqueclasselement2,56,data,104
data,Uniqueclasselement2,79,data,89
data,Uniqueclasselement2,79,data,99
data,Uniqueclasselement3,63,data,105
data,Uniqueclasselement3,66,data,96
data,Uniqueclasselement3,69,data,109
data,Uniqueclasselement3,72,data,111
data,Uniqueclasselement3,52,data,107
data,Uniqueclasselement3,89,data,105
data,Uniqueclasselement3,70,data,104
data,Uniqueclasselement3,91,data,89
data,Uniqueclasselement3,79,data,99

期望的结果

data,Uniqueclasselement1,52,data,105,58
data,Uniqueclasselement1,58,data,96,73
data,Uniqueclasselement1,59,data,109,61
data,Uniqueclasselement1,42,data,111,42
data,Uniqueclasselement1,32,data,107,36
data,Uniqueclasselement1,49,data,105,55
data,Uniqueclasselement1,50,data,104,57
data,Uniqueclasselement1,51,data,89,73
data,Uniqueclasselement1,79,data,99,91
data,Uniqueclasselement2,69,data,105,81
data,Uniqueclasselement2,58,data,96,79
data,Uniqueclasselement2,88,data,109,96
data,Uniqueclasselement2,84,data,117,84
data,Uniqueclasselement2,90,data,107,100
data,Uniqueclasselement2,55,data,105,67
data,Uniqueclasselement2,56,data,104,69
data,Uniqueclasselement2,79,data,89,107
data,Uniqueclasselement2,79,data,99,97
data,Uniqueclasselement3,63,data,105,67
data,Uniqueclasselement3,66,data,96,79
data,Uniqueclasselement3,69,data,109,69
data,Uniqueclasselement3,72,data,101,80
data,Uniqueclasselement3,52,data,107,54
data,Uniqueclasselement3,89,data,105,93
data,Uniqueclasselement3,70,data,104,75
data,Uniqueclasselement3,91,data,89,111
data,Uniqueclasselement3,79,data,99,89

我已经定义了我希望承担的整个任务,而不是你的 stackoverflow 社区为我提供了整个代码,而是定义了我想要实现的场景。评论中提到,这可能是 pandas 中的 1 行代码。我刚刚花了 3 个小时在 youtube 上观看 pandas 教程,对于如何为这个 csv 的每个 uniqueclasselement 执行上述计算,我并不明智。我真的很感谢一些建设性的意见或指示,而不是标准的“你试过什么”旅。

4

1 回答 1

4
import pandas as pd
df = pd.read_csv('inputfile.csv', header=None, sep=',')

df[5] = df.groupby(1)[4].transform(max)-df[4]+df[2]

df.to_csv('test.csv', header=False)
于 2013-10-28T21:48:11.883 回答