熊猫分组依据以计算旧的新列

时间:2020-04-20 18:11:45

标签: pandas

我正在尝试跨组计算计算...实际上,这不是一个很好的解释。让我显示一些代码:

import pandas as pd
df = pd.DataFrame({"state": ["ma", "ny", "dc", "ma", "ny", "dc", "ma", "ny", "dc", "dc"], "v": [1,2,3,2,1,2,3,4,1,10], "w": [1,1,1,1,1,1,1,1,1,10]})
print(df)

输出:

  state   v   w
0    ma   1   1
1    ny   2   1
2    dc   3   1
3    ma   2   1
4    ny   1   1
5    dc   2   1
6    ma   3   1
7    ny   4   1
8    dc   1   1
9    dc  10  10

我想对每种状态进行相同的计算。

 df.assign(diffv=df.groupby('state')['v'].diff())

我将创建一个新的列diffv,其中每个观察值都是针对相同状态的v与先前观察值的变化。

  state   v   w  diffv
0    ma   1   1    NaN
1    ny   2   1    NaN
2    dc   3   1    NaN
3    ma   2   1    1.0
4    ny   1   1   -1.0
5    dc   2   1   -1.0
6    ma   3   1    1.0
7    ny   4   1    3.0
8    dc   1   1   -1.0
9    dc  10  10    9.0

现在,我已经编写了一个函数doubles(Series),给定一个系列会产生一个新的Series,其中每个条目都是一个数字,该数字表示您必须在该系列中找到多半的数字。也就是说,翻倍的速度有多快。 所以双打是这样的。您可以对分数进行争论,但这就是想法。

v  dbl
1, NaN
2, 1
3, 1.5
4, 2
5, 2.5
6, 3
7, 3.5

我想像使用diff()一样使用它:

 df.assign(diffv=df.groupby('state')['v'].doubles())

那当然行不通,但是我觉得我很亲密!

0 个答案:

没有答案