如何在pandas中使用混合数据类型连接忽略Zero值的列



我的数据如下:(我有28列(

col1    col2    col3    col4    col5
AA    0    0    B    0
0    CC    0    D    0
0    0    E    F    G

我正在尝试合并这些列以获得这样的输出:

col1    col2    col3    col4    col5    col6
AA    0    0    B    0   AA;B
0    C    0    DD    0   C;DD
0    0    E    F    G    E;F;G

我只想将非数字字符合并到新列中。

我试过这样:

cols=['col1','col2', 'col3', 'col4', 'col5']
df2["col6"] = df2[cols].apply(lambda x: ';'.join(x.dropna()), axis=1)

但它并没有去掉零。我知道这是一个小小的变化,但我想不通。

感谢

通过where()方法和apply()方法尝试:

df2["col6"]=df2.where((df2!='0')&(df2!=0)).apply(lambda x: ';'.join(x.dropna()), axis=1)

如果有0以外的数字(包括0(,则使用:

df2["col6"]=(df2.where(df2.apply(lambda x:x.str.isalpha(),1))
.apply(lambda x: ';'.join(x.dropna()), axis=1))

使用您显示的示例,请尝试以下操作。试图在这里修复OP的尝试。简单的解释是,主要的更改是使用条件x[x!=0]在OP的尝试代码(联接函数(中生成布尔掩码。

df2['col6'] = df2[cols].apply(lambda x: ';'.join(x[x!=0]), axis=1)

最新更新