将前3个数字除以其余部分保持不变

问题描述 投票:0回答:2

试图在我的数据框中划分前3个数字,其余部分保持不变。

我已将前3个值划分,但希望返回我的数据帧以及尚未划分的其他值

df.apply(lambda x: x.nlargest(3)/2)
python pandas
2个回答
2
投票

pandas.DataFrame.nlargest要求您传递一列确定“大型”的列

这应返回由列['col1']确定的前三行

df.nlargest(3, columns=['col1'])

然后你可以在一行中使用pandas.DataFrame.update

df.update(df.nlargest(3, columns=['col1']) / 2)

0
投票

我会用df2中的新值替换原始数据帧(df)。

    df=pd.DataFrame([1,2,3,4,5,6,7,8,9,10, 12, 14, 18])
    df2 = df.apply(lambda x: x.nlargest(3)/2)
    df.loc[df.index.isin(df2.index)] = df2
    print(df)

结果:

       0
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
5    6.0
6    7.0
7    8.0
8    9.0
9   10.0
10   6.0
11   7.0
12   9.0
© www.soinside.com 2019 - 2024. All rights reserved.