首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据合并Pandas

数据合并Pandas
EN

Stack Overflow用户
提问于 2020-03-17 11:29:33
回答 1查看 33关注 0票数 1

我在不同的机器上做了一些pcmark测试。最后,我要巩固机器的结果。我修改了最终结果以显示。我尝试过用熊猫进行不同形式的合并,但我无法得到预期的结果,但这已经足够接近了。如有任何建议,将不胜感激

机器1:数据帧:

代码语言:javascript
复制
|------------|---------------------------|--------------|------------|  
|Test Case   | SubTest                   | App          | Count      |  
|------------|---------------------------|--------------|------------|   
|pcmark10    | AppStartUp                | NaN          | NaN        |  
|pcmark10    | PhotoEditing              | NaN          | NaN        |  
|pcmark10    | RenderingAndVisualization | NaN          | NaN        |  
|pcmark10    | Spreadsheet               | soffice.bin  | 1.0        |  
|pcmark10    | VideoConferencing         | NaN          | NaN        |  
|pcmark10    | VideoEditing              | NaN          | NaN        |  
|pcmark10    | WebBrowsing               | NaN          | NaN        |  
|pcmark10    | Writing                   | NaN          | NaN        |  
|------------|---------------------------|--------------|------------|  

来自机器2的Dataframe:

代码语言:javascript
复制
|------------|---------------------------|--------------|------------|  
|Test Case   | SubTest                   | App          | Count      |  
|------------|---------------------------|--------------|------------|   
|pcmark10    | AppStartUp                | NaN          | NaN        |  
|pcmark10    | PhotoEditing              | NaN          | NaN        |  
|pcmark10    | RenderingAndVisualization | NaN          | NaN        |  
|pcmark10    | Spreadsheet               | NaN          | NaN        |  
|pcmark10    | VideoConferencing         | NaN          | NaN        |  
|pcmark10    | VideoEditing              | NaN          | NaN        |  
|pcmark10    | WebBrowsing               | chrome.exe   | 2          |  
|pcmark10    | Writing                   | NaN          | NaN        |  
|------------|---------------------------|--------------|------------|  

我希望结果是这样的:

代码语言:javascript
复制
|------------|---------------------------|--------------|------------|------------|  
|Test Case   | SubTest                   | App          | Count_x    | Count_y    |
|------------|---------------------------|--------------|------------|------------|
|pcmark10    | AppStartUp                | NaN          | NaN        | NaN        |  
|pcmark10    | PhotoEditing              | NaN          | NaN        | NaN        |  
|pcmark10    | RenderingAndVisualization | NaN          | NaN        | NaN        |  
|pcmark10    | Spreadsheet               | soffice.bin  | 1.0        | NaN        |  
|pcmark10    | VideoConferencing         | NaN          | NaN        | NaN        |  
|pcmark10    | VideoEditing              | NaN          | NaN        | NaN        |    
|pcmark10    | WebBrowsing               | chrome.exe   | NaN        | 2          |  
|pcmark10    | Writing                   | NaN          | NaN        | NaN        |  
|------------|---------------------------|--------------|------------|------------|  

我试着把所有的键合并在一起,这就是我得到的。利用外部函数引导pcmark10的行值,以网页浏览为空白。应用程序栏中缺少Chrome。

代码语言:javascript
复制
|------------|---------------------------|--------------|------------|------------|  
|Test Case   | SubTest                   | App          | Count_x    | Count_y    |
|------------|---------------------------|--------------|------------|------------|
|pcmark10    | AppStartUp                | NaN          | NaN        | NaN        |  
|pcmark10    | PhotoEditing              | NaN          | NaN        | NaN        |  
|pcmark10    | RenderingAndVisualization | NaN          | NaN        | NaN        |  
|pcmark10    | Spreadsheet               | soffice.bin  | 1.0        | NaN        |  
|pcmark10    | VideoConferencing         | NaN          | NaN        | NaN        |  
|pcmark10    | VideoEditing              | NaN          | NaN        | NaN        |    
|pcmark10    | WebBrowsing               | NaN          | NaN        | 2          |  
|pcmark10    | Writing                   | NaN          | NaN        | NaN        |  
|------------|---------------------------|--------------|------------|------------|  

合并命令:- pd.merge(df1,df2,on='Test‘,'SubTest','App',how="outer",indicator=True)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-17 11:38:19

在您的示例中,在Test CaseSubTest上合并,然后使用ffillbfill创建App

代码语言:javascript
复制
(df1.merge(df2, on=['Test Case', 'SubTest'])
    .assign(App=lambda x: x.filter(like='App').bfill(1).iloc[:,0])
    .drop(['App_x','App_y'], axis=1)
)

输出:

代码语言:javascript
复制
  Test Case                    SubTest  Count_x  Count_y          App
0  pcmark10                 AppStartUp      NaN      NaN          NaN
1  pcmark10               PhotoEditing      NaN      NaN          NaN
2  pcmark10  RenderingAndVisualization      NaN      NaN          NaN
3  pcmark10                Spreadsheet      1.0      NaN  soffice.bin
4  pcmark10          VideoConferencing      NaN      NaN          NaN
5  pcmark10               VideoEditing      NaN      NaN          NaN
6  pcmark10                WebBrowsing      NaN      2.0   chrome.exe
7  pcmark10                    Writing      NaN      NaN          NaN
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60721493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档