我有这个数据框。
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
我正在做的是基于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
这对我来说很好。但是,当我在第一指标中具有较高的价值而在第二指标中具有较低的价值时(例如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
在这种情况下,我什么也没得到。
预期结果:我想要的是,如果值更大或更小,则每次都应该在中间值之间。
您可以通过仅更改两行代码来解决此问题:
y1 = min(df['timestamp'].iloc[0], df['timestamp'].iloc[1])
y2 = max(df['timestamp'].iloc[0], df['timestamp'].iloc[1])
以这种方式y1
始终小于或等于y2
。
但是正如@ALollz指出的那样,可以通过使用它节省计算和编码时间
y1,y2 = np.sort(df['timestamp'].head(2))