我正在尝试从excel文件导入数据。数据通过文件中的多个电子表格进行排列。数据如下所示:
Names Values pvalues Bread 3 0.001 Milk 2 0.003 Eggs 1 0.001
Names Values pvalues Bread 6 0.002 Cheese 2 0.003 Salad 11 0.0001
我想获得数据帧的最终结构:
Names Values_sheet1 Values_sheet2 Bread 3 6 Milk 2 0 Eggs 1 0 Cheese 0 4 Salad 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工作,但它只返回两者中常见的值并丢弃其余的...
非常感谢您的任何见解或帮助!
答案 0 :(得分:0)
由于values
列可能会在DataFrame中被读作系列,因此这里有一个示例可以帮助您:(注意,为了简洁,我省略了pvalues
列)
sheet1 = pd.Series([3,2,1], index=['Bread', 'Milk', 'Eggs'], name='Values_sheet1')
sheet2 = pd.Series([6,2,11], index=['Bread', 'Cheese', 'Salad'], name='Values_sheet2')
# concatenate the two series and fill in the missing data with zeros
result = pd.concat([sheet1,sheet2], axis=1).fillna(0)
print result
应该显示为:
Values_sheet1 Values_sheet2
Bread 3 6
Cheese 0 2
Eggs 1 0
Milk 2 0
Salad 0 11
此外,在您的代码示例中,您有最后一个结果集的行:
Cheese 0 4
我猜4
是拼写错误,因为它应该是2
,就像来自sheet2的这一行:
Cheese 2 0.003
希望有所帮助。