Как сравнить элементы двух листов Excel и добавить новые счетчики и элементы к предыдущему листу, используя Python - PullRequest
0 голосов
/ 02 октября 2018

у меня two Excel sheets.Excel-1 выглядит так

Name   Sample-A    Sample-B
A1        2           3
B1        3           4

Excel-2 выглядит как -

Type               Solution
Sample-A               A1
Sample-A               B1
Sample-B               B1
Sample-B               A1
Sample-A               C1
Sample-A               A1

Что мне нужно сделать, это получить счетчик каждого элемента A1,B1 для каждого образца идобавьте его к Excel-1.Если в Excel-2 есть новый элемент (в данном случае C1), добавьте его также к Excel-1.Для этого конкретного примера результат должен выглядеть следующим образом:

1016

Мне нужно все это, используя Python.

До сих пор я использовал dataframe.count_values() для извлечения total countsот Excel-2.Я использовал dataframe.iloc[] для создания dataframe для каждого типа (sample A and Sample B) из Excel-1.Но я не уверен, как добавить эти значения или новый элемент в Excel-1. Пример кода приведен ниже -

df1 = pd.read_excel(File Location)  #Reading Excel-1
Sample_A_df=df1[(df1['Type']=='Sample-A')]  #Creating dataframe for each type
Sample_B_df=df1[(df1['Type']=='Sample-B')]
CountA=Sample_A_df['Solution'].value_counts() #Getting counts for each element
CountB=Sample_B_df['Solution'].value_counts()
CountAdf=CountA.to_frame() #Converting the Count series to dataframe
CountBdf=CountB.to_frame()

df2 = pd.read_excel(File Location)
AfromPrev=df2.iloc[16:43,0:2]  #iloc is used as I need values from this range only
BfromPrev=df2.iloc[16:43,[0,2]]
AfromPrevList=AfromPrev['Sample-A'].tolist() 
BfromPrevList=BfromPrev['Sample-B'].tolist()

* PS Я в основном создаю новый рабочий лист, так как считаю, что не могу редактировать лист Excel в Python, мне нужно создать новую рабочую книгу,*

Я начал изучать Python только несколько месяцев, и я не уверен, что делать дальше, я не могу понять правильную логику для выполнения этой задачи.

1 Ответ

0 голосов
/ 02 октября 2018

Предполагая, что ваш Excel-1 загружен как df1, а Excel-2 - как df2:

df3 = pd.crosstab(df2.Solution,df2.Type)

Это сделает кадр данных d3 похожим на:

Index  Sample-A Sample-B
A1     2        1
B1     1        1
C1     1        0

ТогдаВы задаете имя столбца в качестве индекса для df1 (Excel-1), используя

df1 = df1.set_index('Name')

Затем вы объединяете два кадра данных (перекрестная таблица и Excel1), используя sum ()

df5 = pd.concat([df1,df3]).groupby(level=0).sum()

Это сделает ваш желаемый df похожим на:

Index   Sample-A    Sample-B
A1      4           4
B1      4           5
C1      1           0
...