将前3个数字相除,其余的保持不变

时间:2019-04-24 20:28:45

标签: python pandas

尝试对数据框中的前3个数字进行除法,其余部分保持不变。

我已经划分了前3个值,但想返回我的数据框以及其他未划分的值

df.apply(lambda x: x.nlargest(3)/2)

2 个答案:

答案 0 :(得分:2)

pandas.DataFrame.nlargest要求您传递将确定“大”的列的列表。

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

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

然后您可以一行使用pandas.DataFrame.update

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

答案 1 :(得分: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