合并两列,忽略空单元格并添加分隔符

时间:2018-12-14 14:27:58

标签: python pandas dataframe concatenation

我需要将1中的23列与分隔符,合并,但忽略空单元格。 所以我有这个数据框:

         1     2
0  A, B, B     D
1           C, D
2  B, B, C  D, A

并且需要创建列3(所需的输出):

         1     2              3
0  A, B, B     D     A, B, B, D
1           C, D           C, D
2  B, B, C  D, A  B, B, C, D, A

因此,如您在此处看到的,空卖出被忽略,并且,在df [“ 3”](B, B, C, D, A)中将元素分隔开。

我尝试通过简单的串联来做到这一点,但没有成功。

如果我简单地串联df["1"] + df["2"],我将得到第一列的最后一个元素与最后一列的第一个元素(BDCD)组合:

         1     2            3
0  A, B, B     D     A, B, BD
1           C, D         C, D
2  B, B, C  D, A  B, B, CD, A

如果添加“,”(df["1"] + ", " + df["2"]):

         1     2              3
0  A, B, B     D     A, B, B, D
1           C, D         , C, D
2  B, B, C  D, A  B, B, C, D, A

您将看到每个空单元格都用“,”替换并添加到df [“ 3”]中(示例= , C, D,但我需要C, D)。

复制代码:

import pandas as pd
df = pd.DataFrame({"1":["A, B, B","","B, B, C"], "2":["D","C, D","D, A"]})
print(df)

2 个答案:

答案 0 :(得分:1)

使用str.strip可能从两侧删除,

(df["1"] + ", " + df["2"]).str.strip(', ')

答案 1 :(得分:0)

中间有空单元格的多列怎么样?

A|B|C|D|E|F
1| |3| |5|6

这应该产生:

A|B|C|D|E|F|Full
1| |3| |5|6|1$3$5$6