Python 数据帧切片
我有以下数据帧:Python 数据帧切片,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: 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.
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的平均值?
我试过了
但这会抛出一个打字错误。为什么我不能在这里切分这些列?不确定为什么过去五年是2012-2016年——它们似乎是头五年。尽管如此,要找到2012-2016年“KGV”的平均值,您可以使用
df[df['Kategorie'] == 'KGV'][[c for c in df.columns if c != 'Kategorie' and 2012 <= int(c) <= 2016]].mean(axis=1)
不确定为什么过去五年是2012-2016年——它们似乎是头五年。尽管如此,要找到2012-2016年“KGV”的平均值,您可以使用
df[df['Kategorie'] == 'KGV'][[c for c in df.columns if c != 'Kategorie' and 2012 <= int(c) <= 2016]].mean(axis=1)
我使用了filter和iloc
我使用了filter和iloc
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的列,它将被选中。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的列,它将被选中。为什么在2012-2016年的最后五年?只要您开始尝试使用u getitem uu方括号索引进行切片,而不是列。此外,切片仅向前工作。在这种情况下,您可以使用df.loc[df[Kategorie]==KGV,2012:2016]来进行索引。@AmiTavory:从现在开始向后最后一次。不是最后一个元素中的最后一个。为什么是2012-2016年的最后五年?只要您开始尝试使用_getitem__;方括号索引进行切片,而不是列。此外,切片仅向前工作。在这种情况下,您可以使用df.loc[df[Kategorie]==KGV,2012:2016]来进行索引。@AmiTavory:从现在开始向后最后一次。不是最后一个元素中的最后一个。从现在开始向后。为什么要用这句话来对比艾翰的方法呢?@Jan没有特别的理由——我在他之前回答过,但我更喜欢他。最后一句话是从现在开始的。为什么要用这个来对比@ayhan的方法呢?@Jan没有特别的理由-我在他之前回答过,但我更喜欢他。谢谢!中间没有foo列,列是每年排序的。非常感谢!中间没有foo列,列是每年排序的。