Python 如何计算excel中条件单元格的总和,用结果填充另一列

Python 如何计算excel中条件单元格的总和,用结果填充另一列,python,excel,mapbox,plotly-dash,Python,Excel,Mapbox,Plotly Dash,编辑:使用Excel中的高级搜索(在“数据”选项卡下),我已经能够创建一个唯一公司名称的列表,并且现在能够基于包含公司名称的单元格进行SUMIF 免责声明:任何python解决方案都将不胜感激,尤其是熊猫 我有60000行数据,其中包含有关授予公司的赠款的信息 我计划创建一个python字典来存储每个唯一的公司名称,以及它们的总金额$given(agreemen_2)和位置坐标。然后,我想在加拿大的实时地图盒地图上使用破折号(Plotly)来显示它 首先,我如何计算和存储授予每家公司的总价值

编辑:使用Excel中的高级搜索(在“数据”选项卡下),我已经能够创建一个唯一公司名称的列表,并且现在能够基于包含公司名称的单元格进行SUMIF

免责声明:任何python解决方案都将不胜感激,尤其是熊猫

我有60000行数据,其中包含有关授予公司的赠款的信息

我计划创建一个python字典来存储每个唯一的公司名称,以及它们的总金额$given(agreemen_2)和位置坐标。然后,我想在加拿大的实时地图盒地图上使用破折号(Plotly)来显示它

首先,我如何计算和存储授予每家公司的总价值

我在其他解决方案中见过SUMIF,但我不确定如何将其输出到新的专栏,如果这有意义的话

我认为一个可能的解决方案是创建一个包含唯一公司名称的新列,然后在该列旁边汇总D列中所有适当的单元格

到目前为止PYTHON的东西

通过下面的代码,我获得了一个看起来更混乱的电子表格,删除了重复项,根据公司名称进行排序,并创建了一个包含相关数据列的新pandas数据库:

corp_df是我想要使用的经过清理的新数据帧

recipien_4是公司唯一的ID号,您可以看到它在每次授予补助金时重复出现。屏幕截图中的Folia Biotech显示了一个重复的拨款,正如我在屏幕截图中没有包括的专栏所证明的那样。如屏幕截图所示,有相当多的副本

import pandas as pd

in_file = '2019-20 Grants and Contributions.csv'

# create dataframe 
df = pd.read_csv(in_file)

# sort in order of agreemen_1
df.sort_values("recipien_2", inplace = True)

# remove duplicates
df.drop_duplicates(subset='agreemen_1', keep='first', inplace=True)

corp_dict = { }

# creates empty dict with only 1 copy of all corporation names, all values of 0
for name in corp_df_2['recipien_2']:
    if name not in corp_dict:
        corp_dict[name] = 0

# full name, id, grant $, longitude, latitude
corp_df = df[['recipien_2', 'recipien_4', 'agreemen_2','longitude','latitude']]

任何提示或技巧都将不胜感激,.ITterPles()似乎不是一个好的解决方案,因为我不确定如何过滤和比较数据,或者是否保留了数据类型。但是请证明我错了,哈哈


我想也许有更好的方法来解决这个问题,直接在Excel中,而不是在数据框的行中进行迭代。这是一个非常开放的问题,所以感谢您的帮助或您认为最好的方向

使用
group\u by
sum
可能最适合您:

corp_df= df.group_by(by=['recipien_2', 'longitude','latitude']).apply(sum, axis=1)

#if you want to transform the index into columns you can add this after as well:
corp_df=corp_df.reset_index()

使用
group\u by
sum
可能最适合您:

corp_df= df.group_by(by=['recipien_2', 'longitude','latitude']).apply(sum, axis=1)

#if you want to transform the index into columns you can add this after as well:
corp_df=corp_df.reset_index()

我可以看到您正在使用pandas读取csv文件,因此您可以使用以下方法:

分组依据

因此,您可以创建一个新的数据框,对公司名称进行分组,如下所示:

dfnew = dp.groupby(['recipien_2','agreemen_2']).sum()
然后,
dfnew
获得这些值

文件编制人:

我可以看到您正在使用pandas读取csv文件,因此您可以使用以下方法:

分组依据

因此,您可以创建一个新的数据框,对公司名称进行分组,如下所示:

dfnew = dp.groupby(['recipien_2','agreemen_2']).sum()
然后,
dfnew
获得这些值

文件编制人:

非常感谢。1班轮解决了我5小时的问题。哈哈,非常感谢。1班轮解决了我5小时的问题。哈哈,谢谢你,内特!这也很有魅力,看来我还有很多关于熊猫的知识要学。谢谢内特!这也很有魅力,看来我还有很多关于熊猫的知识要学。