首页 > 解决方案 > 提取两个值之间的 Pandas 列

问题描述

我有如下数据。前 2 列是 df[3:60] 列的字符串和列名作为连续年份。如何将 2005 年:2010 年和 2015 年之间的所有列提取到所有内容

Country Indicator 1960    1961  1962    1963.....
Aruba    US$      15678 156789  156790  156791
Afgha    US$      68239 78239   88239   98239
Angola   US$      45678 55678   65678   75678
Albania  US$      89345 99345   109345  119345
Andorra  US$      62790 72790   82790   92790
Arab     US$     12987  22987   32987   42987
UAE      US$      6047  16047   26047   36047


我尝试提取列的索引

df.index.get_loc('2005') <- 45
df.index.get_loc('2010') <- 50
df.index.get_loc('2015') <- 55

df.iloc[:, [45:50,55:]]

上面的代码显示了一个错误。如何提取具有索引范围的多个列

标签: pythonpandasdataframemultiple-columns

解决方案


您可以使用np.r_

a = df.columns.get_loc('2005')
b = df.columns.get_loc('2010')
c = df.columns.get_loc('2015')

df.iloc[:,np.r_[a-1:b,c-1:len(df.columns)]]

例子:

df = pd.DataFrame(columns=list('ab') +
                [*map(str,pd.date_range('2000','2021',freq='y').year)])
print(df)

Empty DataFrame
Columns: [a, b, 2000, 2001, 2002, 2003, 2004, 2005,
         2006, 2007, 2008, 2009, 2010, 2011, 2012, 
         2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]
Index: []

print(df.iloc[:,np.r_[a-1:b,c-1:len(df.columns)]])

Empty DataFrame
Columns: [2005, 2006, 2007, 2008, 2009, 2010, 2015, 2016, 2017, 2018, 2019, 2020]
Index: []

推荐阅读