python pandas中的条件连接或连接

时间:2017-05-04 03:16:50

标签: python excel pandas

我在excel中有6列,我想加入其中的5列;但是,在所有列的单元格中,我没有任何字符串,其中一些字符串为“0”。我需要的是:加入5列并在单元格不为“0”时使用“>”分隔符,当它为零时,只需将其保留为空白。能否帮助我在python或excel中如何做到这一点?以下示例:

The original file is:(C1:C6 are columns' name)
C1           C2          C3             C4             C5              C6
H1           C0           0             L              L                0
H2           R0LL         AB            0              0                0

I need the results like:(C1 and RESULTS are columns'name)

C1                RESULTS
H1                C0>L>L
H2                R0LL>AB 

由于

2 个答案:

答案 0 :(得分:0)

  • 使用mask'0'个零字符串转换为np.nan
  • 当我们使用np.nan或空值进行堆叠时,它们将被删除
  • 现在我已删除了空值,我groupby pd.MultiIndex我使用stack
  • 创建的apply的第一级
  • '>'.join rename函数
  • join系列和dfdf = df.astype(str) s = df.mask(df == '0').loc[:, 'C2':'C6'].stack() s = s.groupby(level=0).apply('>'.join).rename('RESULTS') c = df[['C1']] df[['C1']].join(s) C1 RESULTS 0 H1 C0>L>L 1 H2 R0LL>AB 的第一列
Get-Service -Name '*<search string>*'

答案 1 :(得分:-1)

#use apply to join the non 0 columns by '>'
df['RESULTS'] = df.apply(lambda x: '>'.join([e for e in x[1:].astype(str) if e!='0']),axis=1)

df
Out[90]: 
   C1    C2  C3 C4 C5  C6  RESULTS
0  H1    C0   0  L  L   0   C0>L>L
1  H2  R0LL  AB  0  0   0  R0LL>AB