[英]Python: Pandas Concatenate each row into a string
我有以下Pandas Dataframe:
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
我喜歡用一列創建一個新的DataFrame,其中每一行是一個連接的字符串,帶有一個分隔符“,”:
0
0 a,e,h
1 b,f
2 c,g
3 d
對於我可以使用的單行
df.iloc[0,:].str.cat(sep=",")
但是如何在不使用for-loop的情況下將其應用於整個DataFrame(如果可能)
for i, r in df.iterrows():
print(r.str.cat(sep=","))
作為新的數據幀:
ndf = pd.DataFrame([r.str.cat(sep=",") for i, r in df.iterrows()])
print(ndf)
0
0 a,e,h
1 b,f
2 c,g
3 d
你可以使用:
df.apply(lambda x: ','.join(x.dropna()), axis=1)
輸出:
0 a,e,h
1 b,f
2 c,g
3 d
dtype: object
堆棧默認情況下會刪除空值。 在level=0
上跟進groupby
df.stack().groupby(level=0).apply(','.join)
0 a,e,h
1 b,f
2 c,g
3 d
dtype: object
要復制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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.