Pandas 查找列中两个常用值的年差
我使用的是熊猫,我试图找出不同年份的差异,当我的数据按标签分组,然后按团队分组时。我已经尝试使用groupby来解决我正在处理的问题,但是我不能得到我想要的结果。这是我的df的头部(8) 所以,让我困惑的是,我想要的基本上有两个群体——标签和团队。然后我需要找出将被排序的年份之间的差异,结果将出现在差异列中。任何帮助都将不胜感激Pandas 查找列中两个常用值的年差,pandas,group-by,Pandas,Group By,我使用的是熊猫,我试图找出不同年份的差异,当我的数据按标签分组,然后按团队分组时。我已经尝试使用groupby来解决我正在处理的问题,但是我不能得到我想要的结果。这是我的df的头部(8) 所以,让我困惑的是,我想要的基本上有两个群体——标签和团队。然后我需要找出将被排序的年份之间的差异,结果将出现在差异列中。任何帮助都将不胜感激 Team Year labels difference Hawks 2001 b NAN Haw
Team Year labels difference
Hawks 2001 b NAN
Hawks 2004 b 1
Nets 1987 b NAN
Nets 1988 a NAN
Nets 2004 b 17
Nets 2001 a 13
Nets 2000 c NAN
Hawks 2003 b 2
不确定最后一行的标签是“a”还是“b”。从您的数据片段:
Hawks 2003 a
根据您的预期输出:
Hawks 2003 b 2
我将假定标签
应为“b”,以便我可以匹配您的预期输出:
Hawks 2003 b 2
你需要在['Team','Labels']上做一个groupby,你可以用它来计算年差。但首先,请按['Team'、'labels'、'Year']对数据进行排序,以便您的年度差异计算是正确的:
In [8]: df.sort(['Team','labels','Year'],inplace=True)
In [9]: df
Out[9]:
Team Year labels
0 Hawks 2001 b
7 Hawks 2003 b
1 Hawks 2004 b
3 Nets 1988 a
5 Nets 2001 a
2 Nets 1987 b
4 Nets 2004 b
6 Nets 2000 c
现在,在['Team','labels']上进行分组,并计算组中每一行的年份差:
In [10]: df['difference'] = df.groupby(['Team','labels'])['Year'].diff(1)
In [11]: df
Team Year labels difference
0 Hawks 2001 b NaN
7 Hawks 2003 b 2
1 Hawks 2004 b 1
3 Nets 1988 a NaN
5 Nets 2001 a 13
2 Nets 1987 b NaN
4 Nets 2004 b 17
6 Nets 2000 c NaN
如果出于某种原因,您希望返回数据帧的原始顺序,您可以执行以下操作:
In [12]: df.sort_index()
Out[12]:
Team Year labels difference
0 Hawks 2001 b NaN
1 Hawks 2004 b 1
2 Nets 1987 b NaN
3 Nets 1988 a NaN
4 Nets 2004 b 17
5 Nets 2001 a 13
6 Nets 2000 c NaN
7 Hawks 2003 b 2
数据中最后一行的标签为“a”,但expect输出的标签为“b”。这是打字错误吗?非常感谢-我不知道你可以用两个栏目分组-这是我的问题。我的一个问题是为什么在diff(1)中有一个1?你是对的;您可以只执行
diff()
,因为默认值是periods=1
。我只是直截了当。哦,谢谢!事实上我对此一无所知。不过真的很有帮助!