Python 将每列的最后N个正值提取到新的数据帧中
我想为每列提取最后N个大于0的值,并将它们保存在新的数据帧中。你能给我建议一个有效的方法吗?谢谢大家!Python 将每列的最后N个正值提取到新的数据帧中,python,pandas,Python,Pandas,我想为每列提取最后N个大于0的值,并将它们保存在新的数据帧中。你能给我建议一个有效的方法吗?谢谢大家! ##df A 0 1 1 2 2 3 3 0 4 -1 5 3 6 4 7 -5 N = 2 df[df['A'] > 0].tail(N) 假设您有这样一个数据帧,N是3: 0 1 2 0 1 -5 2 1 8 -5 -5 2 1 5 9 3 6 7 -6 4 -3 -6 -1 5
##df
A
0 1
1 2
2 3
3 0
4 -1
5 3
6 4
7 -5
N = 2
df[df['A'] > 0].tail(N)
假设您有这样一个数据帧,
N
是3:
0 1 2
0 1 -5 2
1 8 -5 -5
2 1 5 9
3 6 7 -6
4 -3 -6 -1
5 -7 1 9
6 -8 8 0
7 -8 3 1
8 -7 -9 7
9 5 5 -5
10 5 4 8
11 -4 -4 -2
12 -3 8 6
13 -1 1 -4
14 -3 9 4
15 -5 1 -4
16 3 6 -9
17 -4 -9 4
18 9 7 1
19 -1 -2 9
df\u out=pd.DataFrame(columns=df.columns)
对于df.列中的列:
df_out[col]=df[df>0][col].dropna().tail(3).重置索引(drop=True)
将为您提供以下输出
假设您有这样一个数据帧,
N
是3:
0 1 2
0 1 -5 2
1 8 -5 -5
2 1 5 9
3 6 7 -6
4 -3 -6 -1
5 -7 1 9
6 -8 8 0
7 -8 3 1
8 -7 -9 7
9 5 5 -5
10 5 4 8
11 -4 -4 -2
12 -3 8 6
13 -1 1 -4
14 -3 9 4
15 -5 1 -4
16 3 6 -9
17 -4 -9 4
18 9 7 1
19 -1 -2 9
df\u out=pd.DataFrame(columns=df.columns)
对于df.列中的列:
df_out[col]=df[df>0][col].dropna().tail(3).重置索引(drop=True)
将为您提供以下输出
使用字典理解和按掩码过滤,使用和创建默认索引值,使用
drop=True
和最后一次传递到DataFrame
构造函数:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(-5, 5, size=(10, 3)))
print (df)
0 1 2
0 -5 3 -2
1 1 -2 -2
2 2 3 -5
3 -5 3 4
4 -2 2 -3
5 -2 1 0
6 -5 -1 3
7 1 -1 -4
8 -4 0 4
9 0 1 1
d = {c: df.loc[df[c].gt(0), c].tail(3).reset_index(drop=True) for c in df.columns}
df = pd.DataFrame(d)
print (df)
0 1 2
0 1 2 3
1 2 1 4
2 1 1 1
使用字典理解和按掩码过滤,使用和创建默认索引值,使用
drop=True
和最后一次传递到DataFrame
构造函数:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(-5, 5, size=(10, 3)))
print (df)
0 1 2
0 -5 3 -2
1 1 -2 -2
2 2 3 -5
3 -5 3 4
4 -2 2 -3
5 -2 1 0
6 -5 -1 3
7 1 -1 -4
8 -4 0 4
9 0 1 1
d = {c: df.loc[df[c].gt(0), c].tail(3).reset_index(drop=True) for c in df.columns}
df = pd.DataFrame(d)
print (df)
0 1 2
0 1 2 3
1 2 1 4
2 1 1 1
发布您的数据帧,以及预期的outputGroupby和tail imo,如果没有发布您的数据帧,很难说预期的outputGroupby和tail imo,如果没有iamklaus,很难说谢谢,但是如果我想为数据帧中的所有列,而不仅仅是列执行此操作,我该怎么做“A?您希望它们单独或作为完整的df…”iamklaus谢谢您,但是如果我希望对数据帧中的所有列执行此操作,而不仅仅是对“A”列执行此操作,我该怎么做?您希望它们单独或作为完整的df。。?