我有一个dataframe看起来如下:
In [74]: data2
Out[74]:
a b c
2012-06-12 0 1 1
2012-06-13 1 1 0
2012-06-14 1 0 1
2012-06-15 1 0 1
2012-06-16 1 1 0
2012-06-17 1 0 1
Run Code Online (Sandbox Code Playgroud)
有没有办法使值=列标题值= 1?
结果df:
a b c
2012-06-12 0 b c
2012-06-13 a b 0
2012-06-14 a 0 c
2012-06-15 a 0 c
2012-06-16 a b 0
2012-06-17 a 0 c
Run Code Online (Sandbox Code Playgroud)
然后删除= 0的值,使df减少到2列:(此时列标题不相关)
结果df:
1 2
2012-06-12 c b
2012-06-13 a b
2012-06-14 a c
2012-06-15 a c
2012-06-16 a b
2012-06-17 a c
Run Code Online (Sandbox Code Playgroud)
你也可以召唤一些更深的熊猫 - 并做:
In [28]: df.apply(lambda x: x.astype(object).replace(1, x.name))
Out[28]:
a b c
2012-06-12 0 b c
2012-06-13 a b 0
2012-06-14 a 0 c
2012-06-15 a 0 c
2012-06-16 a b 0
2012-06-17 a 0 c
Run Code Online (Sandbox Code Playgroud)
from pandas import *
df = DataFrame([[0, 1, 1], [1, 1, 0], [1, 0, 1],], columns=['a','b','c'])
foo = []
for i in df.index:
foo.append( df.columns[df.ix[i] == 1])
DataFrame(foo, index = df.index)
Run Code Online (Sandbox Code Playgroud)
哪个回报:
0 1
0 b c
1 a b
2 a c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |