繁体   English   中英

Pandas - 在每行中找到第二大值

[英]Pandas - find second largest value in each row

早上好! 我有一个三列 dataframe 并且需要找到每行的第二大值

DATA=pd.DataFrame({"A":[10,11,4,5],"B":[23,8,3,4],"C":[12,7,11,9]})

    A   B   C
0  10  23  12
1  11   8   7
2   4   3  11
3   5   4   9

我尝试使用 nlargest 但它似乎是基于列的,并且找不到针对此问题的 pandas 解决方案。 先感谢您!

import pandas as pd


df=pd.DataFrame({"A":[10,11,4,5],"B":[23,8,3,4],"C":[12,7,11,9]})

# find the second largest value for each row
df['largest2'] = df.apply(lambda x: x.nlargest(2).iloc[1], axis=1)


print(df.head())

结果:

    A   B   C  largest2
0  10  23  12        12
1  11   8   7         8
2   4   3  11         4
3   5   4   9         5

在 Python 列表中

mylist = [1, 2, 8, 3, 12]
print(sorted(mylist, reverse=True)[1])

在 Python Pandas 列表中

import pandas as pd
df=pd.DataFrame({"A":[10,11,4,5],"B":[23,8,3,4],"C":[12,7,11,9]})
print(sorted(df['A'].nlargest(4))[3])
print(sorted(df['B'].nlargest(4))[3])
print(sorted(df['C'].nlargest(4))[3])

在 Python Pandas 列表 mk.2

import pandas as pd
df=pd.DataFrame({"A":[10,11,4,5],"B":[23,8,3,4],"C":[12,7,11,9]})

num_of_rows = len(df.index)
second_highest = num_of_rows - 2
print(sorted(df['A'].nlargest(num_of_rows))[second_highest])
print(sorted(df['B'].nlargest(num_of_rows))[second_highest])
print(sorted(df['C'].nlargest(num_of_rows))[second_highest])

在 Python Pandas 列表 mk.3

import pandas as pd
df=pd.DataFrame({"A":[10,11,4,5],"B":[23,8,3,4],"C":[12,7,11,9]})

col_names
num_of_rows = len(df.index)
second_highest = num_of_rows - 2

for col_name in col_names:
     print(sorted(df[col_name].nlargest(num_of_rows))[second_highest])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM