【发布时间】:2014-07-02 15:44:28
【问题描述】:
我正在尝试从 Excel 文件中导入数据。数据通过文件中的几个电子表格排列。数据如下所示:
工作表1:
名称值 pvalues 面包 3 0.001 牛奶 2 0.003 鸡蛋 1 0.001
工作表2:
名称值 pvalues 面包 6 0.002 奶酪 2 0.003 沙拉 11 0.0001
我想获得数据框的最终结构:
名称 Values_sheet1 Values_sheet2 面包 3 6 牛奶 2 0 鸡蛋 1 0 奶酪 0 4 沙拉 0 11
- 如何合并“名称”列,以便一次性拥有所有名称并跟踪其他列中的相应数据?
借助文档和其他帖子,我可以做到以下几点:
import pandas as pd
input_handle = pd.ExcelFile('file.xls')
#get a dictionnary with all the sheets as keys and their data as values
dfs = {sheet_name : input_handle.parse(sheet_name) for sheet_name in input_handle.sheet_names}
#Keep track of the Sheet names
SheetNames = []
for i in dfs.keys:
SheetNames.append(i)
#Get new dataframe with merged data from each spreadsheet
New_df = [pd.merge(dfs[name], dfs[name], on='Names') for name in SheetNames]
我的代码中的最后一行不起作用...在合并 2 个电子表格时,我设法让 pd.merge 工作,但它只返回两个电子表格中的共同值并丢弃其余的...
- 是否也可以跟踪每个值的 pvalue ?
非常感谢您的任何见解或帮助!
【问题讨论】:
-
您为什么要尝试将数据框与其自身合并? "
pd.merge(dfs[name], dfs[name]..." -
一般来说,您需要做的就是阅读每张纸,将其索引(使用
set_index)设置为“名称”,然后根据工作表名称。 -
感谢您的评论。我使用了下面的方法,因为我不确定它如何与 rsuffix 一起工作......