尝试对数据框中的前3个数字进行除法,其余部分保持不变。
我已经划分了前3个值,但想返回我的数据框以及其他未划分的值
df.apply(lambda x: x.nlargest(3)/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