我有一个NxN熊猫数据框,其中包含布尔值.例如:
In[56]: df
Out[56]:
15 25 35 45 55
10 True False False False False
20 False True False False False
30 False False True False False
40 False False False True False
50 False False False False True
我需要做的是将此框架折叠成一个Nx2大熊猫DataFrame,该框架的索引和列值在交点处为True,作为记录值.例如:
In[62]: res
Out[62]:
0 1
0 10 15
1 20 25
2 30 35
3 40 45
4 50 55
似乎找不到一种简单的方法来执行此操作.
解决方法:
pd.melt从宽格式到长格式“取消数据透视表”:
result = pd.melt(df.reset_index(), id_vars=['index'])
mask = result['value'] == True
result = result.loc[mask, ['index', 'variable']]
result.columns = [0, 1]
print(result)
产量
0 1
0 10 15
6 20 25
12 30 35
18 40 45
24 50 55
PS.您所需的DataFrame有两列,它们的值充当坐标. df.pivot方法将具有类似坐标的列的DataFrame转换为像原始DataFrame一样的“宽格式” DataFrame.如果您想采用其他方法,请使用pd.melt.
标签:pandas,python,numpy