我有以下数据框:
2012 2013 2014 2015 2016 2017 2018 Kategorie
0 5.31 5.27 5.61 4.34 4.54 5.02 7.07 Gewinn pro Aktie in EUR
1 13.39 14.70 12.45 16.29 15.67 14.17 10.08 KGV
2 -21.21 -0.75 6.45 -22.63 -7.75 9.76 47.52 Gewinnwachstum
3 -17.78 2.27 -0.55 3.39 1.48 0.34 NaN PEG
现在,我只选择 KGV 行:
df[df["Kategorie"] == "KGV"]
哪些输出:
2012 2013 2014 2015 2016 2017 2018 Kategorie
1 13.39 14.7 12.45 16.29 15.67 14.17 10.08 KGV
如何计算过去五年(本例中为 2016、15、14、13、12)的 mean()?
我试过了
df[df["Kategorie"] == "KGV"]["2016":"2012"].mean()
但这会抛出一个 TypeError。为什么我不能在此处对列进行切片?
请您参考如下方法:
loc 支持这种类型的切片(从左到右):
df.loc[df["Kategorie"] == "KGV", "2012":"2016"].mean(axis=1)
Out:
1 14.5
dtype: float64
请注意,这不一定表示 2012、2013、2014、2015 和 2016。这些是字符串,因此表示 df['2012'] 和 df['2016 ']。中间可能有一个名为 foo 的列,它会被选中。
