Python 使用pandas获取每行和每列标题的最大值
我有一个数据帧,我希望获得每行的最大值和最大值所在列的列标题,并返回一个新的数据帧。实际上,我的数据框有50多列和30000多行: df1: 因此理想的输出如下所示: df2: 我尝试了以下方法,但没有成功:Python 使用pandas获取每行和每列标题的最大值,python,pandas,Python,Pandas,我有一个数据帧,我希望获得每行的最大值和最大值所在列的列标题,并返回一个新的数据帧。实际上,我的数据框有50多列和30000多行: df1: 因此理想的输出如下所示: df2: 我尝试了以下方法,但没有成功: df2 = df1.max(axis=1) result.index = df1.idxmax(axis=1) 还尝试: df2=pd.Series(df1.columns[np.argmax(df1.values,axis=1)]) final=pd.DataFrame(df1.loo
df2 = df1.max(axis=1)
result.index = df1.idxmax(axis=1)
还尝试:
df2=pd.Series(df1.columns[np.argmax(df1.values,axis=1)])
final=pd.DataFrame(df1.lookup(s.index,s),s)
我看过其他帖子,但似乎仍然无法解决这个问题。
如果
ID
是索引,用缺少的值替换0
行,则任何帮助都将非常有用:
df = df1.agg(['idxmax','max'], axis=1).mask(lambda x: x['max'].eq(0))
print (df)
idxmax max
AB Exv 4.4
NJ RNA 3.4
KL NaN NaN
JC Prot 5.4
如果ID
为列,则使用:
df = df1.set_index('ID').agg(['idxmax','max'], axis=1).mask(lambda x: x['max'].eq(0))
谢谢,最后你的第二个建议ID=column在哪里工作。
df = df1.agg(['idxmax','max'], axis=1).mask(lambda x: x['max'].eq(0))
print (df)
idxmax max
AB Exv 4.4
NJ RNA 3.4
KL NaN NaN
JC Prot 5.4
df = df1.set_index('ID').agg(['idxmax','max'], axis=1).mask(lambda x: x['max'].eq(0))