用iloc查找计算单元

2024-05-19 09:48:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧df7,它的一部分看起来是这样的:

      ticker   obs_date  eps_median_est
448    HTHT 2018-07-27           0.240
449    HTHT 2018-08-15           0.170
261    TEAM 2018-07-26           0.010
262    TEAM 2018-08-19          -0.015

我的目标是从最近的一个中减去第二个最近的esp。例如在HTHT中:.17-.24=-.07

每个“ticker”有两行。你知道吗

以下是我目前掌握的情况:

for each in symbol_list[0:]:
df8 = df7.loc[df7.ticker == each]
df8 = df8.tail(2)

df9.eps_chg  = (( df8.iloc[1,2] -  df8.iloc[0,2] ) / df8.iloc[1,2] ) *100
df10 = pd.concat([df10,df9],sort=False)   

错误为索引器错误:单个位置索引器超出界限。 我哪里出错了?你知道吗


Tags: 数据date错误epsteammediantickereach
2条回答

我想你可以

df7.groupby('ticker')['eps_median_est'].apply(lambda g: g.iloc[-1] - g.iloc[-2])

您可以groupby使用ticker并从head(1)中减去tail(1),以获得第一个条目和最后一个条目之间的差异。你知道吗

df7.groupby('ticker').eps_median_est.apply(lambda x: x.head(1).item() - x.tail(1).item())

ticker
HTHT    0.070
TEAM    0.025
Name: eps_median_est, dtype: float64

如果想要最后两个值之间的差值,可以执行tail(2)diff()

df.groupby('ticker').eps_median_est.apply(lambda x: x.tail(2).diff().dropna().item())

ticker
HTHT   -0.070
TEAM   -0.025
Name: eps_median_est, dtype: float64

相关问题 更多 >

    热门问题