2017-08-01 108 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