data202007["重复次数"]=data202007["学校id"].groupby([data202007["学校id"],data202007["项目名称"]]).transform(lambda x:x.count()-1)
transform 在这的作用是?
lihui15
2020-08-11
#遇到这样的问题应该把每一年的数据查清楚之后再合并数据
import pandas as pd
#如果某个学校的某个项目有重复的记录,就像现在这样,应该把他找出来并进行适当处理(具体由业务决定)
#7月A学校项目1有重复记录
data202007=pd.DataFrame([["A学校","项目1",300],
["A学校","项目1",500],
["B学校","项目1",200],
["B学校","项目2",300]],columns=["学校id","项目名称","金额"])
#可以看到A学校项目1有一次重复,我们想要找出这样的情况。可以生成一列重复次数。
data202007["重复次数"]=data202007["学校id"].groupby([data202007["学校id"],data202007["项目名称"]]).transform(lambda x:x.count()-1)
#通过对重复次数进行筛选,找到重复的数据
data202007[data202007["重复次数"]>0]
lihui15
2020-08-11
先解决你第一个问题:计算每个学校各个项目的金额差。
import pandas as pd
data202007=pd.DataFrame([["A学校","项目1",300],
["A学校","项目2",500],
["B学校","项目1",200],
["B学校","项目2",300]],columns=["学校id","项目名称","金额"])
data202008=pd.DataFrame([["A学校","项目1",200],
["A学校","项目2",500],
["B学校","项目1",200],
["B学校","项目2",300],
["B学校","项目3",200]],columns=["学校id","项目名称","金额"])#将两个数据框进行横向合并
data并=pd.merge(data202007,data202008,
on =["学校id","项目名称"],how="outer",
suffixes=("_2007","_2008"))
#计算各个项目金额差 data并["各个项目金额差"]=data并["金额_2007"]-data并["金额_2008"]
#把项目差不为0的筛选出来 data并[data并["各个项目金额差"]!=0]

看下这个问题这样解决可以吗?
lihui15
2020-08-11
import pandas as pd
data202007=pd.DataFrame([["A学校","项目1",300],
["A学校","项目1",500],
["B学校","项目1",200],
["B学校","项目2",300]],columns=["学校id","项目名称","金额"])
data202008=pd.DataFrame([["A学校","项目1",200],
["A学校","项目1",500],
["B学校","项目1",200],
["B学校","项目2",300],
["B学校","项目3",200]],columns=["学校id","项目名称","金额"])
原始数据是类似于这样的数据框吗?
lihui15
2020-08-11