在Pandas数据框中查找索引值的行

时间:2015-09-23 21:51:47

标签: python pandas dataframe

我导入数据并使用年份(第一列)对其进行索引
<br /> <br /> <br /> <div style="background-color: #fcfaf9; box-shadow: 3px 4px 8px #DBDBDB; margin: auto; padding-bottom: 25px; padding-left: 40px; padding-right: 25px; padding-top: 35px; width: 70%;"> <div style="margin: 0 auto; width: 215px;"> <img src="http://bit.ly/Washi-tape-rosa" style="margin: -70px auto 0; position: absolute; width: 215px;" /> </div> <u><b><i>Ingredients:</i></b></u><br /> <br /> 2 big zuchinni grated<br /> 1 egg beaten<br /> 1/4 cup almond flour<br /> 1 tsp sea salt<br /> 1 tsp black pepper<br /> </div>
rawData = pandas.read_csv(inFile)

我的数据现在有两列,一年是一年,另一列是价格,

年价
1925 100
1926 105
1927年125


2014 1000

我现在想在某一年之前删除所有数据,所以我写
rawData.set_index('Year', inplace=True)
startYr = 1946

但这没有任何作用,因为1946年大于最大指数(即80)。找到对应于1946的行startIdx的正确方法是什么,这样我就可以写了
rawData1 = rawData[startYr:]
startIdx = some_function(startYr)

提前感谢您的帮助

Thomas Philips

1 个答案:

答案 0 :(得分:0)

使用loc进行基于标签的索引:

In [3]:
df = pd.DataFrame(index = np.arange(1925,2015))
df

Out[3]:
Empty DataFrame
Columns: []
Index: [1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014]

[90 rows x 0 columns]

In [5]:
df.loc[1946:]

Out[5]:
Empty DataFrame
Columns: []
Index: [1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014]

[69 rows x 0 columns]

你尝试了什么:

In [6]:
df[1946:]

Out[6]:
Empty DataFrame
Columns: []
Index: []

将无效,因为它会查找名为1946

的列

因此,要在1946之后专门查找行,必须使用1947,这假设您的索引中确实存在1947

df.loc[1947:]