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 循环(如果可能)
默认情况下,堆叠会删除空值。后续使用groupby上level=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)