Python 3.x 当列值满足某些条件时,在panda dataframe的行中提取2列数据
我有一个熊猫数据帧df,内容如下Python 3.x 当列值满足某些条件时,在panda dataframe的行中提取2列数据,python-3.x,pandas,Python 3.x,Pandas,我有一个熊猫数据帧df,内容如下 Date Factor Expiry Grade 0 12/31/1991 2.138766 3/30/1992 -3.33% 1 10/29/1992 2.031381 2/8/1993 -1.06% 2 5/20/1993 2.075670 6/4/1993 -6.38% 3 10/11/1994 1.441644 11/22/1994
Date Factor Expiry Grade
0 12/31/1991 2.138766 3/30/1992 -3.33%
1 10/29/1992 2.031381 2/8/1993 -1.06%
2 5/20/1993 2.075670 6/4/1993 -6.38%
3 10/11/1994 1.441644 11/22/1994 -7.80%
4 1/11/1995 1.669600 1/20/1995 -7.39%
5 5/15/1995 1.655237 8/8/1995 -8.68%
6 10/17/1996 0.942000 10/22/1996 -7.39%
7 2/19/1998 0.838838 5/26/1998 13.19%
8 7/9/1998 1.303637 8/28/1998 -6.73%
9 12/29/1998 1.517232 1/21/1999 -11.03%
10 4/26/1999 1.613346 5/24/1999 -7.55%
11 7/8/1999 2.136339 9/23/1999 5.43%
12 3/22/2000 5.097782 3/29/2000 -6.44%
我想提取出
日期
和到期
列值,对应于等级为的行。您可以在列表中定义列:
cols = ['Expiry', 'Date']
print (df.loc[df['Grade'].str.rstrip('%').astype(float).le(-8), cols])
Expiry Date
5 8/8/1995 5/15/1995
9 1/21/1999 12/29/1998
如果需要输出列表
s,请先转换为numpy数组,然后再转换为列表
:
out = df.loc[df['Grade'].str.rstrip('%').astype(float).le(-8), cols].values.tolist()
print (out)
[['8/8/1995', '5/15/1995'], ['1/21/1999', '12/29/1998']]
谢谢你是个熊猫天才。你可以在几秒钟内弄清楚我花了多少小时。这让你成为天才而我成为白痴:)@user1315789-不,你不是白痴,我也不是天才。
cols = ['Expiry', 'Date']
print (df.loc[df['Grade'].str.rstrip('%').astype(float).le(-8), cols])
Expiry Date
5 8/8/1995 5/15/1995
9 1/21/1999 12/29/1998
out = df.loc[df['Grade'].str.rstrip('%').astype(float).le(-8), cols].values.tolist()
print (out)
[['8/8/1995', '5/15/1995'], ['1/21/1999', '12/29/1998']]