我有下面的布尔值表:
df1 = pd.DataFrame(data={'w': [True, False, False],
'x': [False, True, False],
'y': [True, True, True],
'z': [True, False, True]},
index=pd.Series([1, 2, 3], name='index'))
| 索引|w型|X射线|Y形|Z轴|
| - -|- -|- -|- -|- -|
| 一个|正确|错误|正确|正确|
| 2个|错误|正确|正确|错误|
| 三个|错误|错误|正确|正确|
我创建了一个宽度与df1
相同的新表格:
pd.DataFrame(columns=[f'column{num}' for num in range(1, len(df1.columns) + 1)])
| | 栏1|栏2|第3栏|第4栏|
| - -|- -|- -|- -|- -|
我想做的是从df1
开始折叠列,这样对于每一行,我只显示具有True
值的列:
| 索引|栏1|栏2|第3栏|第4栏|
| - -|- -|- -|- -|- -|
| 一个|w型|Y形|Z轴|不适用|
| 2个|X射线|Y形|不适用|不适用|
| 三个|Y形|Z轴|不适用|不适用|
4条答案
按热度按时间rekjcdws1#
dot
和str.split
的单向:ubbxdtey2#
请尝试:
col17t5w3#
您可以先使用特殊乘法(True -〉1,1 *'w' -〉'w' / False -〉0,0 *'w' -〉'')将列名Map到单元格
然后使用自定义键对行进行独立排序(
isinstance(w, float)
将在末尾推送NaN/float)输出:
nbnkbykc4#
在您的情况下,执行
dot
,然后执行split