pythonを使用してDFの列を結合する方法は?

user86907:

私は、文字列を含むデータフレームの列を連結しようとしています。私は、行が含まれているかどうかを確認したいNaNのであれば、削除しNaN、その行から、その行の上に1と残りの部分を連結します。最終的にはNaNを含む行を削除します。

ここに私のサンプルデータは、次のとおりです。

df=[["d","t","u","y","e"],["d",np.nan,np.nan,np.nan,"o"],["y","p","p","w","r"]]
df=pd.DataFrame(df)
print(df)
0    1    2    3  4
d   t    u    y   e
d  NaN  NaN  NaN  o
y    p    p    w  r

私は、出力は以下のようになりたいです。

   0    1    2    3   4
   dd   t    u    y  eo   
   y    p    p    w   r

ここに私の裁判が、運です。

for i in range(len(df)):
for j in range(len(df.iloc[1,])):
    if(pd.isnull(df.iloc[i,j])==True):
        df.concat(df.iloc[i,j],df.iloc[i-1,j])
        df.dropna(df.iloc[:,i])

私は、Python、これで缶誰ヘルプ私に新しいです。

エズレル:

アイデアは、ヘルパーを作成しているSeriesグループ化します。

したがって、最初の少なくとも一つを有するすべての行に対してマスクを作成するNaNことにより、S DataFrame.isnaDataFrame.any、作成Seriesコンストラクタに非一致値を置き換えるNaNことにより、S Series.whereとバックして上記と同様の基の欠損値を埋めるlimit=1上に一つだけの行を交換するため。

最後は、グループ化と集計、空の値に不足しているすべての値を置き換えますjoin

m = df.isna().any(axis=1)
s = pd.Series(np.arange(len(m)), index=df.index)
g = s.where(m).bfill(limit=1).fillna(s)

df = df.fillna('').groupby(g).agg(''.join).reset_index(drop=True)
print (df)
    0  1  2  3   4
0  dd  t  u  y  eo
1   y  p  p  w   r

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=351746&siteId=1