我有two Excel sheets。Excel-1看起来像这样
Name Sample-A Sample-B
A1 2 3
B1 3 4Excel-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_values()从Excel-2中提取total counts。我使用dataframe.iloc[]为来自Excel-1的每种类型的(sample A and Sample 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()*P.S.我基本上是在创建一个新的工作表,因为我认为我不能用Python编辑excel工作表,我需要创建一个新的工作簿。*
我刚开始学习python几个月,我不知道下一步该做什么,我无法找到正确的逻辑来执行这个任务。
发布于 2018-10-02 05:05:16
假设您的Excel-1作为df1被拉进来,而Excel-2作为df2被拉进来:
df3 = pd.crosstab(df2.Solution,df2.Type)这将使d3 dataframe看起来像:
Index Sample-A Sample-B
A1 2 1
B1 1 1
C1 1 0然后使用以下方法将列名设置为df1 (Excel-1)的索引
df1 = df1.set_index('Name')然后使用sum()连接两个数据文件(交叉插入一个和Excel1)。
df5 = pd.concat([df1,df3]).groupby(level=0).sum()这将使您想要的df看起来像:
Index Sample-A Sample-B
A1 4 4
B1 4 5
C1 1 0https://stackoverflow.com/questions/52601732
复制相似问题