簡體   English   中英

Python:Pandas將每一行連接成一個字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM