У меня есть 2 фрейма данных, оба имеют количество столбцов с одинаковым именем, и оба имеют один столбец, который действует как уникальный идентификатор.Я создал копию одного из фреймов данных, но то, что я хотел бы сделать, это умножить столбцы вместе, которые имеют одно и то же имя, где уникальные идентификаторы равны.
Я довольно новичок в Python, и я уверен, что многиеЯ думаю, это просто, но, просматривая документацию, я нахожу это трудным.
Первые 2 кадра данных создаются путем чтения файла excel в pandas.
Затем я создаю копию первого кадра данных.и я хочу умножить содержимое 2-го фрейма данных на содержимое скопированного фрейма данных, в котором найдена уникальная строка и имя столбца совпадает.
import pandas as pd
# read tables from excel to create dictionary of dataframes where the key is the tab name
all_sheets_df = pd.read_excel("xl_file_name.xlsx", sheet_name=None)
print(all_sheets_df)
# These are the dataframes created from the excel sheets
OrderedDict([('sheet1',
cola colb colc uni-id 201801 201802 201803 201804 201805
0 strings strings strings unique-a 4 3 2 9 10
1 strings strings strings unique-b 8 1 9 1 6
2 strings strings strings unique-c 4 3 4 4 3
3 strings strings strings unique-d 3 9 8 4 4
4 strings strings strings unique-e 5 4 7 9 10
5 strings strings strings unique-f 2 3 8 2 1
6 strings strings strings unique-g 2 4 2 6 8
7 strings strings strings unique-h 6 2 5 4 10
8 strings strings strings unique-i 7 1 3 10 8),
('sheet2',
cola colb colc uni-id 201801 201802 201803 \
0 strings strings strings unique-d 0.052935 0.928645 0.505045
1 strings strings strings unique-f 0.776922 0.338918 0.932535
2 strings strings strings unique-c 0.799160 0.343798 0.145575
3 strings strings strings unique-a 0.659975 0.308475 0.588496
4 strings strings strings unique-i 0.450931 0.667722 0.831734
5 strings strings strings unique-e 0.791060 0.801188 0.781400
6 strings strings strings unique-b 0.653861 0.649786 0.545784
7 strings strings strings unique-h 0.849901 0.327025 0.874650
8 strings strings strings unique-g 0.812554 0.995710 0.042272
201804 201805
0 0.011463 0.980985
1 0.743247 0.715230
2 0.313438 0.882728
3 0.656984 0.864108
4 0.236997 0.422303
5 0.603261 0.083762
6 0.722503 0.170563
7 0.608704 0.263881
8 0.702862 0.760257 )])
# create new dataframe as a copy of the first sheet in excel
calculated_dataframe = all_sheets_df.get("sheet1","").copy()
# get list of columns to update (all columns to be updated start with characters '20'
update_cols = [col for col in calculated_dataframe.columns if '20' in col]
# for each row in calculated_dataframe, find row in all_sheets_df.get("sheet2","") where column name 'uni-id' matches 'uni-id' in calculated_dataframe and then for each update_col in update_cols calculate_dataframe value = calculate_dataframe value * all_sheets_df.get("sheet2","") value
# this is the piece im really struggling with.
Я хочу перебрать каждую строку selected_dataframe, найтисоответствующая строка в all_sheets_df.get("sheet2","")
, где столбец sheet2 uni-id = selected_dataframe столбец uni-id столбца и умножает каждый столбец, найденный в списке update_cols, вместе (эти столбцы существуют в обоих кадрах данных).
Любое руководство, которое вы можете предоставитьбыло бы здорово !!