根据匹配将不同工作表/文件中的值相加

时间:2019-03-22 01:33:11

标签: python pandas dataframe

我有一个名称列表,其中包含10张纸的1个excel文件。 我正在使用conda 2.7的熊猫。

文件中的列(相同的列名):

  1. 名称
  2. col1
  3. col2

每个工作表的名称都是前面提到的名称列表的子集。

我需要做的是输出1张1页的文件。每张纸的结构都需要像这样:

名称列表| value_sheet1 | value_sheet2 | ... | value_sheet10 | summed_values

我需要遍历每张纸,并根据以下条件提取与名称相关的值: [名称列表] = [名称]

例如:

list of names = ["Jack","Jill","Doe"]

工作表1:

name | col1 | col2 | value
Jack |   .. |   .. |  10
Doe  |  ..  |  ..  |  15

sheet2:

name | col1 | col2 | value
Jill |   .. |   .. |  10
Doe  |  ..  |  ..  |  15

输出表:

name | value_sheet1 | value_sheet2 | ... | summed_value
Jack |     10       |      0       |  .. |    10
Doe  |     15       |      15      |  .. |    30
Jill |      0       |      10      |  .. |    10

感谢您的帮助!

谢谢。

1 个答案:

答案 0 :(得分:1)

更新更多工作表

l=[df1,df2]
l=[y.set_index('name').add_prefix('sheet'+str(x+1)+'_') for x,y in enumerate(l)]
df=pd.concat(l,axis=1,sort=False)
df['New']=df.filter(like='value').sum(1)
df
Out[485]: 
      sheet1_value  sheet2_value   New
Jack         10.0          NaN  10.0
Doe          15.0         15.0  30.0
Jill          NaN         10.0  10.0

如何创建dfs的list

xl = pd.ExcelFile(fn)


d={name:xl.parse(name) for name in xl.sheet_names}
l=d.values()