gpt4 book ai didi

python - 如何仅保留数据框中的前N个值

转载 作者:行者123 更新时间:2023-12-03 16:41:27 27 4
gpt4 key购买 nike

它是pandas/Dataframe,对于每一行,我只想保留前N(N = 3)个值,并将其他值设置为nan

import pandas as pd
import numpy as np

data = np.array([['','day1','day2','day3','day4','day5'],
['larry',1,4,4,3,5],
['gunnar',2,-1,3,4,4],
['tin',-2,5,5, 6,7]])

df = pd.DataFrame(data=data[1:,1:],
index=data[1:,0],
columns=data[0,1:])
print(df)
输出是
       day1 day2 day3 day4 day5
larry 1 4 4 3 5
gunnar 2 -1 3 4 4
tin -2 5 5 6 7
我想得到
       day1 day2 day3 day4 day5
larry NaN 4 4 NaN 5
gunnar NaN NaN 3 4 4
tin NaN 5 NaN 6 7
pandas: Keep only top n values and set others to 0类似,但我只需要保留N个最高可用值,否则平均值不正确
对于上面的结果,我只想保留第一个 5

最佳答案

这是在df.rank上使用axis=1的另一种方法,我们反转列并计算排名,因为在要保留第一个值的重复项上。

df[df.astype(float).iloc[:,::-1].rank(1,'first').ge(3)]
       day1 day2 day3 day4 day5
larry NaN 4 4 NaN 5
gunnar NaN NaN 3 4 4
tin NaN 5 NaN 6 7

但是,按照@Allolz的正确指导,对于基于df形状的一般用例,可以使用:
N=3
n = df.shape[1]-N+1
df[df.astype(float).iloc[:,::-1].rank(1,'first').ge(n)]

关于python - 如何仅保留数据框中的前N个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66048632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com