Суммируйте значения для разных листов / файлов на основе совпадения - PullRequest
1 голос
/ 22 марта 2019

У меня есть список имен, 1 файл Excel с 10 листами в нем. Я использую панды с Конда 2.7.

Столбцы в файле (одинаковые имена столбцов):

  1. имя
  2. col1
  3. col2
  4. значение

Каждый лист имеет имена, которые являются подмножеством ранее упомянутого списка имен.

Что мне нужно сделать, это вывести 1 файл с 1 листом. Каждый лист должен быть структурирован как:

список имен | value_sheet1 | value_sheet2 | ... | value_sheet10 | summed_values ​​

Мне нужно пройтись по каждому листу и извлечь значение, связанное с именем, из условия: [список имен] = [имя]

Например:

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

sheet1:

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

sheet2:

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

output_sheet:

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

Любая помощь приветствуется!

Спасибо.

1 Ответ

1 голос
/ 22 марта 2019

Обновить Больше листов

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

Как создать list из dfs

xl = pd.ExcelFile(fn)


d={name:xl.parse(name) for name in xl.sheet_names}
l=d.values()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...