如何使用Python比较两个excel工作表的元素并向上一个工作表添加新计数和元素
我有两张Excel表格<代码>Excel-1如下所示如何使用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
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?