我想找到组中最小的差异并返回索引.(蟒蛇、熊猫)

  • 本文关键字:索引 返回 蟒蛇 熊猫 python pandas
  • 更新时间 :
  • 英文 :


这是我的df。

index   firmcode    year    indcode     ROA
0      a         2006      03         0.1
1      b         2006      03         0.2
2      c         2006      03         0.4
3      d         2006      03         0.7   
4      e         2006      07         0.3
5      f         2006      07         0.8
6      g         2006      07         1.1
7      h         2006      07         2.1

我希望它是如下(除了同一家公司(。这是ROA匹配最近的公司(在同一年,相同的indcode(

index   firmcode    year    indcode     ROA   diff_min_firmcode
0      a         2006      03         0.1         b  
1      b         2006      03         0.2         a
2      c         2006      03         0.4         b          
3      d         2006      03         0.7         c
4      e         2006      07         0.3         f 
5      f         2006      07         0.8         g 
6      g         2006      07         1.1         f
7      h         2006      07         2.1         g 

如何获取df['diff_min_firmcode']列?

一个想法是使用自定义函数来减去每个组的每个值ROA,将NaNs设置为对角线以省略同一个公司,然后使用DataFrame.idxmin:

def f(x):
y = x['ROA'].to_numpy()
arr = np.abs(y - y[:, None])
np.fill_diagonal(arr, np.nan)
z = pd.DataFrame(arr, index=x['firmcode'], columns=x.index)
return z.idxmin()
df['diff_min_firmcode'] = df.groupby(['year','indcode'], group_keys=False).apply(f)
print (df)
firmcode  year  indcode  ROA diff_min_firmcode
0        a  2006        3  0.1                 b
1        b  2006        3  0.2                 a
2        c  2006        3  0.4                 b
3        d  2006        3  0.7                 c
4        e  2006        7  0.3                 f
5        f  2006        7  0.8                 g
6        g  2006        7  1.1                 f
7        h  2006        7  2.1                 g

最新更新