San*_*wal 2 python between dataframe pandas
我有这个数据框。
df
name timestamp year
0 A 2004 1995
1 D 2008 2004
2 M 2005 2006
3 T 2003 2007
4 B 1995 2008
5 C 2007 2003
6 D 2005 2001
7 E 2009 2005
8 A 2018 2009
9 L 2016 2018
Run Code Online (Sandbox Code Playgroud)
我正在做的是基于 df['timestamp'] 中的前两个条目。我正在从这两个条目之间的 df['year'] 中获取所有值。在这种情况下是(2004-2008)。
y1 = df['timestamp'].iloc[0]
y2 = df['timestamp'].iloc[1]
movies = df[df['year'].between(y1, y2,inclusive=True )]
movies
name timestamp year
1 D 2008 2004
2 M 2005 2006
3 T 2003 2007
4 B 1995 2008
7 E 2009 2005
Run Code Online (Sandbox Code Playgroud)
这对我来说很好用。但是当我在第一个索引中具有更大的价值而在第二个索引中具有更低的价值(例如 2008-2004)时,结果为空。
df
name timestamp year
0 A 2008 1995
1 D 2004 2004
2 M 2005 2006
3 T 2003 2007
4 B 1995 2008
5 C 2007 2003
6 D 2005 2001
7 E 2009 2005
8 A 2018 2009
9 L 2016 2018
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我什么也没得到。
预期结果: 我想要的是,如果值更大或更小,我每次都应该获得介于两者之间的值。
你可以使用Series.head和Series.agg:
y1, y2 = df['timestamp'].head(2).agg(['min', 'max'])
movies = df[df['year'].between(y1, y2,inclusive=True )]
Run Code Online (Sandbox Code Playgroud)
[出去]
name timestamp year
1 D 2004 2004
2 M 2005 2006
3 T 2003 2007
4 B 1995 2008
7 E 2009 2005
Run Code Online (Sandbox Code Playgroud)