当列的总和为0时,将单元格标记为1

时间:2019-03-04 20:07:58

标签: python pandas

样本DF:

A  B    C D E
UK text 0 0 1
US text 0 0 0 
UK text 1 0 0
US text 0 0 0
CA text 0 0 0

已转换的DF:

A  B    C D E
UK text 0 0 1
US text 0 0 0 
UK text 1 0 0
US text 0 0 0
CA text 0 0 0
"" "NA" 0 1 0

基本上,我想在二进制列的相同值为0时添加一个虚拟行。

这是我的尝试,但运行它时值没有改变:

df[['C', 'D', 'E']].loc[df.index.max, ['C', 'D', 'E']].sum(axis=0) == 0)] = 1

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果给定列中的所有值均为1,则可以用0 append换行:

x = df.loc[:,'C':].sum(axis=0).eq(0).astype(int)
new_row = x.reindex(df.columns).fillna({'A':'', 'B':'NA'})
df.append(new_row, ignore_index=True)

 A     B    C    D    E
0  UK  text  0.0  0.0  1.0
1  US  text  0.0  0.0  0.0
2  UK  text  1.0  0.0  0.0
3  US  text  0.0  0.0  0.0
4  CA  text  0.0  0.0  0.0
5        NA  0.0  1.0  0.0