我有一个带有日期索引和列名的DataFrame。
df1 =
date col1 col2 col3
20190101 1 2 3
20190102 6 5 4
20190103 -7 -9 -8
20190104 4 9 8
,然后得到带有索引子集的Series和一个列名,该列名的每一行的最大值都大于0。这样。
max_col =
20190101 col3
20190102 col1
20190104 col2
我想要一个结果,其结果为max_col中的列名。
max_val =
20190101 3
20190102 6
20190104 9
我尝试使用df1.loc[max_col]
,df1.at[max_col]
,但最接近的是df1[max_col]
。但这会创建矩阵而不是矢量响应。
有什么想法吗?
编辑:
max_col
中的值来自另一个DataFrame df2
。
因此,max_val
不必是df1的最大值。我的错。
使用df1.lookup(max_col.index, max_col)
的解决方案效果很好。
答案 0 :(得分:0)
在您的初始df中,只需使用df.max(1)
。然后,过滤掉所有为负的值。
s = df.max(1)
s[s>0]
返回
date
20190101 3
20190102 6
20190104 9
dtype: int64
但是,如果您真的想使用max_col
系列,请查看df.lookup
的定义
df.lookup(max_col.index, max_col)