2017-08-01 141 views
0

大家好,我正在做數據清理,而且我正面臨一些障礙。我有一個看起來像這樣多dataframes:將數值從一列添加到熊貓的另一列

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 

我想的WL和WM列這樣的結果看起來是這樣的組合:

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列並將其附加到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

這是基於在其上的邏輯你切片? –

+0

@coldspeed我想分詞,我知道索引5開始的字詞。 – codeninja

回答

1
  1. df.append結合WMWL。調用df.reset_index重置索引下一個級聯

  2. pd.concat(..., ignore_index=True, ...)結合的結果(1)與所述數據幀的其餘部分,忽略了索引


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:]究竟做了什麼?將第2列後的所有內容附加到df1 ['WM']和df1 ['WL']? – codeninja

+0

@codeninja固定。有點破舊。另外,'df.iloc'將在第二列之後得到一切。 –

+0

@coldspeed感謝您的回答!現在更多的數據清理... – codeninja