1

样本 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

任何帮助将非常感激。

4

1 回答 1

1

如果给定列中append1所有值都是0

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
于 2019-03-04T20:12:36.300 回答