我正在尝试复制DataFrame.idxmax()
和DataFrame.idxmin()
的功能,但我想使用自定义函数进行评估,而不是min或max。
例如在DataFrame D中:
+---+-----+-----+-----+
| | A | B | C |
+---+-----+-----+-----+
| 0 | NaN | 100 | NaN |
+---+-----+-----+-----+
| 1 | 100 | NaN | NaN |
+---+-----+-----+-----+
| 2 | NaN | NaN | 200 |
+---+-----+-----+-----+
只有一列不会为包含整数的null。当数字等于100时,我想返回一个S系列(带索引i):
+---+---+
| 0 | B |
+---+---+
| 1 | A |
+---+---+
我希望D.apply(lambda x: x[x==100].index,1)
可以工作,但事实并非如此。建议?
答案 0 :(得分:1)
In [66]: df[df==100].stack()
Out[66]:
0 B 100
1 A 100
dtype: float64
答案 1 :(得分:0)
怎么样:
df = pd.DataFrame({"A":[np.nan, np.nan, 100], "B":[np.nan, 100, np.nan], "C":[100, np.nan, np.nan]})
df.unstack().dropna()
或:
df[df==100].unstack().dropna()
如果您只需要索引:
df.unstack().dropna().reset_index().drop(0, axis=1)