清理熊猫中的数据

时间:2019-02-10 14:24:58

标签: python pandas dataframe

我有一个以下格式的数据框:

 Col
 Honda [edit]   
 Accord (4 models)[1]  
 Civic  (4 models)[2]  
 Pilot  (3 models)[1]  
 Toyota [edit]  
 Prius  (4 models)[1]  
 Highlander (3 models)[4]  
 Ford [edit]  
 Explorer (2 models)[1]  

我想要以下格式的数据:

  A         B
  Honda     Accord  
  Honda     Civic  
  Honda     Pilot  
  Toyota    Prius   
  Toyota    Highlander

2 个答案:

答案 0 :(得分:2)

str.contains的测试字符串npm创建布尔掩码,然后使用第一个app.post('/getdata',function(req,res){ console.log(req.body); request(req.body.url).pipe(res); }); [edit]按空格分隔列,将不匹配的值替换为( where之前,然后将缺少的值填充到列[中。函数insert用于将新列移到第一位置。最后通过boolean indexing在两列中删除相同的值,并通过NaN创建默认索引:

A

另一种解决方案:

reset_index

答案 1 :(得分:1)

IIUC 1st首先使用str.contains找到包含编辑内容的Col,然后使用ffill(假设所有数据已排序),之后我们只需要使用str.split清除您的数据

df['A']=df.Col[df.Col.str.contains('edit')]
df.A=df.A.ffill()
df
Out[58]: 
                          Col                A
0             Honda [edit]     Honda [edit]   
1      Accord (4 models)[1]    Honda [edit]   
2      Civic  (4 models)[2]    Honda [edit]   
3      Pilot  (3 models)[1]    Honda [edit]   
4             Toyota [edit]    Toyota [edit]  
5      Prius  (4 models)[1]    Toyota [edit]  
6  Highlander (3 models)[4]    Toyota [edit]  
7               Ford [edit]      Ford [edit]  
8    Explorer (2 models)[1]      Ford [edit]  

df.apply(lambda x : df.Col.str.split(r'[(|[]').str[0],1).query('Col!=A')
Out[59]: 
          Col       A
1      Accord   Honda
2       Civic   Honda
3       Pilot   Honda
5       Prius  Toyota
6  Highlander  Toyota
8    Explorer    Ford