2017-05-04 59 views
1

我有6列在Excel中,我想加入其中5個;然而,在所有列的單元格中,我沒有任何字符串,其中一些具有「0」。我需要的是:加入5列,當單元格不是「0」時使用「>」分隔符,當它爲零時,將其保留爲空白。你能幫我怎麼在python或excel中做到嗎?下面的例子:有條件的連接或連接python熊貓

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 

感謝

回答

0
  • 使用mask打開'0'零字符串到np.nan
  • 當我們與np.nan或空棧,他們被丟棄
  • 現在,我已經放棄了nulls,我可以groupby第一級的pd.MultiIndex我用stack
  • apply'>'.join功能
  • rename系列和joindf

df = 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 
+0

感謝,但第一線是不行的第一列,我想是因爲我的一些單元格只包含我需要忽略的「0」;然而,一些字符串中有零,所以當我想掩蓋它們時,這是行不通的。例如在單元格C2中,我有「AB0LR」。 –

+0

你的一些零是數字,一些是字符串。使用'df = df.astype(str)'將它們全部變成字符串。然後確保你用'df =='0')' – piRSquared

+0

@ S.16掩蓋我已經更新了我的文章,並且符合你的期望輸出。 – piRSquared

-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 
+0

請使用[編輯]鏈接來解釋此代碼的工作原理,而不僅僅是提供代碼,因爲解釋更有可能幫助未來的讀者。另見[回答]。 [源(http://stackoverflow.com/users/5244995) –