如何使用Python比较两个excel工作表的元素并向上一个工作表添加新计数和元素

如何使用Python比较两个excel工作表的元素并向上一个工作表添加新计数和元素,python,excel,dataframe,counter,Python,Excel,Dataframe,Counter,我有两张Excel表格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 Sampl

我有两张Excel表格<代码>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
。对于这个特定的示例,结果应该如下所示-

Name   Sample-A    Sample-B
A1        4           4
B1        4           1
C1        1           0
我需要使用
Python
来完成这一切

到目前为止,我使用了
dataframe.count\u values()
Excel-2
中提取
总计数。我使用
dataframe.iloc[]
Excel-1
为每种类型
(示例A和示例B)
创建
dataframe
。但我不知道如何在“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()
*另外,我基本上是在创建一个新的工作表,因为我认为我不能用Python编辑excel工作表,我需要创建一个新的工作簿*


我现在才开始学习python几个月,我不知道下一步该做什么,我无法找出执行此任务的正确逻辑

假设您的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
Index   Sample-A    Sample-B
A1      4           4
B1      4           5
C1      1           0
然后使用以下命令将列名设置为df1(Excel-1)的索引

然后使用sum()将两个数据帧(交叉选项卡的一个和Excel1)连接起来

这将使您所需的df看起来像:

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

嘿,我已经试过了,但df5显示的是计数,而不是总值:/@T0167您能否澄清/详细说明总值的不同之处以及在哪个字段/列中?@T0167我清楚地看到结果是合适的;它是总值
df5
df3
显示相同的结果,除了
df3
中的计数是
integer
,而
df5
中的计数是
float
。我们在这里遗漏了一些东西。我完全复制了我发布的解决方案。如果您的数据帧(excels)与问题中发布的数据帧完全相同,则图片中不应出现任何浮动。此外,您是否可以查看问题中所需的数据帧输出。我怀疑问题中所需df输出中样本B和B1组合的值1具有误导性?您所需的结果如何使样本B和B1组合的值为1?