2017-08-01 11 views
0

こんにちは私はデータのクリーンアップを行っていますが、私は少しの障害に直面しています。パンダのある列から別の列に値を追加する

df1 
     WM  WH  WP 
0  NaN  NaN  NaN 
1 medium high premium 
2  26  15  14 
3  32  18  29 
4  41  19  42 
5  dog  fur  napkins   
6  cat  tesla earphone 
7  rat  tobias controller 
8  apple 
9  orange 
10 mango 

私の最初の試みは、WL列をスライスすることでした。私は結果は次のようになりますようにWLとWM列を結合しようとしています

df1 
     WL  WM  WH  WP 
0 NaN  NaN  Sea  NaN 
1  low medium high premium 
2  26  26  15  14 
3  32  32  18  29 
4  41  41  19  42 
5  apple dog  fur  napkins   
6  orange cat  tesla earphone 
7  mango rat  tobias controller 

:私はこのようになり、複数のデータフレームを持っていますそれをWM列に追加しますが、正しい出力が得られていません。

for num in range(len(df)): 
    low = df.loc[:, df.isin(['WarrantyLow']).any()] 
    low = low[5:] 
    medium = df.loc[:, df.isin(['WarrantyMedium']).any()] 
    medium.append(low) 
+0

それに基づいた論理とは何かを無視して、データフレームの残りの部分(1)の結果を組み合わせのインデックスをリセットするためにdf.reset_indexを呼び出しあなたはそれらをスライスしますか? –

+0

@coldspeed私は単語をスライスしようとしており、単語がインデックス5から始まることを知っています。 – codeninja

答えて

1
  1. df.appendWMWLを結合します。次の連結

  2. pd.concat(..., ignore_index=True, ...)がインデックスに


In [400]: pd.concat([df1['WM'].append(df1['WL'].iloc[5:]).reset_index(drop=True), \ 
        df1.iloc[:, 2:]], ignore_index=True, axis=1).fillna('')\ 
       .rename(columns={i : x for i, x in enumerate(['WM', 'WH', 'WP'])}) 
Out[400]: 
     WM  WH   WP 
0    Sea    
1 medium high  premium 
2  26  15   14 
3  32  18   29 
4  41  19   42 
5  dog  fur  napkins 
6  cat tesla earphone 
7  rat tobias controller 
8 apple      
9 orange      
10 mango 
+0

明確にするために、df1.iloc [:、2:]は何をしていますか? df1 ['WM']とdf1 ['WL']に列2の後にすべてを追加しますか? – codeninja

+0

@codeninja修正されました。少し手荒かったです。また、 'df.iloc'は2番目の列の後ろのすべてを取得します。 –

+0

@coldspeedあなたの答えに感謝します!今すぐより多くのデータクリーンアップに... – codeninja

関連する問題