我正在尝试跨组计算计算...实际上,这不是一个很好的解释。让我显示一些代码:
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())
那当然行不通,但是我觉得我很亲密!