下面是一個使用一個班輪apply
和to_dict
方法。
In [162]: (x > 2).apply(lambda y: x.columns[y.tolist()].tolist(), axis=1).to_dict()
Out[162]: {0: ['b'], 1: ['a'], 2: ['a', 'b']}
詳細
In [173]: (x > 2)
Out[173]:
a b
0 False True
1 True False
2 True True
In [174]: (x > 2).apply(lambda y: [y.tolist()], axis=1)
Out[174]:
0 [[False, True]]
1 [[True, False]]
2 [[True, True]]
dtype: object
In [175]: (x > 2).apply(lambda y: x.columns[y.tolist()].tolist(), axis=1)
Out[175]:
0 [b]
1 [a]
2 [a, b]
dtype: object
這裏的另一個需要一行代碼。
In [205]: {i: x.columns[y.tolist()].tolist() for i, y in (x > 2).iterrows()}
Out[205]: {0: ['b'], 1: ['a'], 2: ['a', 'b']}
或者
In [122]: {i: y[y].index.tolist() for i, y in (x > 2).iterrows()}
Out[122]: {0: ['b'], 1: ['a'], 2: ['a', 'b']}
1件事。 'x.columns [y.tolist()]'爲什麼會引發錯誤'ValueError:值的長度與索引的長度不匹配'雖然'x.columns [y.tolist()]。tolist()'不? – MYGz
這非常完美:) 謝謝! – xlax