假设我有一个DataFrame...
data = {'PVOL': [190, 105, 100, 150, 100, 170], 'STKS': [2000, 2500, 3000, 3500, 4000, 4500],
'CVOL': [64, 179, 98, 281, 86, 90]}
df = pd.DataFrame(data)
现在我想找到所有其他列的3个最大值(PVOL,CVOL...等,因为我的df也可能有多个其他列)和它们对应的列STKS的值,方式如下(作为字符串/打印):
PVOL - 2000[190], 4500[170], 3500[150]
CVOL - 3500[281], 2500[179], 3000[98]
我试着在DF格式中得到2个最大的值。
columns_name = list(df.columns)
columns_name.remove('STKS')
data_dict = {}
for col in columns_name:
temp=[]
data=df.sort_values(col, ascending=False)[:2][[col,'STKS']].values
for row in data:
temp.append(row[1])
temp.append(row[0])
data_dict[col]=temp
new_df1=pd.DataFrame(data_dict,index="STK VOL STK VOL".split())
new_df1.set_axis(["PVOL", "CVOL"], axis='columns', inplace=True)
Vol_df = new_df1[["PVOL", "CVOL"]]
print(Vol_df)
有没有简单的方法可以做到这一点???我也读到过...
df.nlargest()
谢谢.
2条答案
按热度按时间dz6r00yl1#
可以,你可以像这样使用nlargest方法:
输出:
【编辑】:
以实现所需的特定输出格式
输出:
hmtdttj42#
在
nlargest
中使用自定义函数:输出量:
如果你想要字符串:
输出量:
仅适用于列的子集: