试图在我的数据框中划分前3个数字,其余部分保持不变。
我已将前3个值划分,但希望返回我的数据帧以及尚未划分的其他值
df.apply(lambda x: x.nlargest(3)/2)
pandas.DataFrame.nlargest
要求您传递一列确定“大型”的列
这应返回由列['col1']
确定的前三行
df.nlargest(3, columns=['col1'])
然后你可以在一行中使用pandas.DataFrame.update
df.update(df.nlargest(3, columns=['col1']) / 2)
我会用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