【发布时间】:2021-12-25 11:23:09
【问题描述】:
这是与this 线程类似的问题。
让我们将 df 视为:
df = pd.DataFrame([["a", 2, 3], ["b", 5, 6], ["c", 8, 9],["a", 0, 0], ["a", 8, 7], ["c", 2, 1]], columns = ["A", "B", "C"])
如何计算列“B”的所有行与组中第 N 个索引处的行(每个组的最低索引)之间的差异,并将其放在“D”列中?我想计算我的数据的均方位移,并且我想计算每组中的一列中的值与该组中第一个出现的行的差异。 我试过了:
df['D'] = df.groupby(["A"])['B'].sub(df.groupby(['A'])["B"].iloc[0])
Group = df.groupby(["A"])
但是,使用 .sub 和 groupby 会引发以下错误: AttributeError: 'SeriesGroupBy' 对象没有属性 'sub'
想要的结果是这样的:
A B C D
0 a 2 3 0 *lowest index in group "a"
1 b 5 6 0 *lowest index in group "b"
2 c 8 9 0 *lowest index in group "c"
3 a 0 0 -2
4 a 8 7 6
5 c 2 1 -6
【问题讨论】:
-
您使用什么公式来计算 D 列中的第一个值(即“0”)?
标签: pandas dataframe group-by attributeerror