Python:Pandas 将每一行连接成一个字符串

val*_*zio 6 python string concatenation pandas

我有以下熊猫数据框:

df=pd.DataFrame({0:["a","b","c","d"], 1:["e","f","g",None], 2:["h",None,None,None]})

   0     1     2
0  a     e     h
1  b     f  None
2  c     g  None
3  d  None  None
Run Code Online (Sandbox Code Playgroud)

我喜欢用一列创建一个新的 DataFrame,其中每一行都是一个连接字符串,并带有一个分隔符“,”:

       0
0  a,e,h
1    b,f
2    c,g
3      d
Run Code Online (Sandbox Code Playgroud)

对于单行,我可以使用

df.iloc[0,:].str.cat(sep=",")
Run Code Online (Sandbox Code Playgroud)

但是如何将其应用于整个 DataFrame,而不使用 for 循环(如果可能)

piR*_*red 5

默认情况下,堆叠会删除空值。后续使用groupbylevel=0

df.stack().groupby(level=0).apply(','.join)

0    a,e,h
1      b,f
2      c,g
3        d
dtype: object
Run Code Online (Sandbox Code Playgroud)

要复制 OP 的输出,请使用 to_frame

df.stack().groupby(level=0).apply(','.join).to_frame(0)

       0
0  a,e,h
1    b,f
2    c,g
3      d
Run Code Online (Sandbox Code Playgroud)