首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较两个excel工作表的元素,并使用Python将新计数和元素添加到以前的工作表中

如何比较两个excel工作表的元素,并使用Python将新计数和元素添加到以前的工作表中
EN

Stack Overflow用户
提问于 2018-10-02 03:43:54
回答 1查看 40关注 0票数 2

我有two Excel sheetsExcel-1看起来像这样

代码语言:javascript
复制
Name   Sample-A    Sample-B
A1        2           3
B1        3           4

Excel-2看起来-

代码语言:javascript
复制
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中。对于这个特殊的例子,结果应该是这样的-

代码语言:javascript
复制
Name   Sample-A    Sample-B
A1        4           4
B1        4           1
C1        1           0

我需要用Python来完成整件事。

到目前为止,我使用dataframe.count_values()Excel-2中提取total counts。我使用dataframe.iloc[]为来自Excel-1的每种类型的(sample A and Sample B)创建dataframe。但我不知道如何在‘Excel-1’中添加这些值或新元素。示例代码如下所示-

代码语言:javascript
复制
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()

*P.S.我基本上是在创建一个新的工作表,因为我认为我不能用Python编辑excel工作表,我需要创建一个新的工作簿。*

我刚开始学习python几个月,我不知道下一步该做什么,我无法找到正确的逻辑来执行这个任务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 05:05:16

假设您的Excel-1作为df1被拉进来,而Excel-2作为df2被拉进来:

代码语言:javascript
复制
df3 = pd.crosstab(df2.Solution,df2.Type)

这将使d3 dataframe看起来像:

代码语言:javascript
复制
Index  Sample-A Sample-B
A1     2        1
B1     1        1
C1     1        0

然后使用以下方法将列名设置为df1 (Excel-1)的索引

代码语言:javascript
复制
df1 = df1.set_index('Name')

然后使用sum()连接两个数据文件(交叉插入一个和Excel1)。

代码语言:javascript
复制
df5 = pd.concat([df1,df3]).groupby(level=0).sum()

这将使您想要的df看起来像:

代码语言:javascript
复制
Index   Sample-A    Sample-B
A1      4           4
B1      4           5
C1      1           0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52601732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档