我有4个从Excel导入的数据集,包含2013学年,2014年,2015年和2016年的total_budget。所有数据集都有一个共同的列,每所学校(列LAESTAB)。熊猫:从多个数据框提取列到基于公共列名的新数据框
接下来我想要一个新的数据集,其左侧是列公共列LAESTAB(4个数据集中的值相同),列总数为2013,总数为2014,总数为2015,总数为2016(来自不同数据集)。
我也想摆脱其余的数据,包括那些没有出现在所有数据集中的学校ID。
我会尝试进一步阐述它的例子:
下面是Excel中的数据集的一个示例:
>>> print cuts2016.head()
LA_codelocal_authority_name UPIN URN LAESTAB \
0 201 City of London 500000 0.0 2013614
1 202 Camden 500005 0.0 2022095
2 202 Camden 500007 0.0 2022219
3 202 Camden 500012 0.0 2022502
4 202 Camden 500014 0.0 2022603
School Name Academy? Phase Provider Type \
0 Sir John Cass's Foundation Primary School No Primary School
1 Carlton Primary School No Primary School
2 Fleet Primary School No Primary School
3 Rhyl Primary School No Primary School
4 Torriano Primary School No Primary School
MFG protection (+ve) or capping/scaling (-ve) total2016 \
0 35000 1659000
1 68000 1956000
2 -10000 1059000
3 97000 2234000
4 0 2284000
另一张Excel数据集2005:
print cuts2015.head()
LA_code local_authority_name UPIN URN LAESTAB \
0 201 City of London NaN 100000 2013614
1 202 Camden NaN 100008 2022019
2 202 Camden NaN 100009 2022036
3 202 Camden NaN 100010 2022065
4 202 Camden NaN 100011 2022078
school_name Phase Provider Type \
0 Sir John Cass's Foundation Primary School Primary School
1 Argyle Primary School Primary School
2 Beckford Primary School Primary School
3 Brecknock Primary School Primary School
4 Brookfield Primary School Primary School
Basic Entitlement Total Funding Deprivation Total Funding total_pre_MFG \
0 1,206,000 215,000 1,644,000
1 1,333,000 367,000 2,068,000
2 1,482,000 359,000 2,221,000
3 1,234,000 348,000 1,974,000
4 1,436,000 256,000 2,028,000
MFG protection (+ve) or capping/scaling (-ve) total2015 \
0 0 1644000
1 25,000 2093000
2 0 2221000
3 72,000 2046000
4 -58,000 1970000
我需要的最终结果如下(应显示总计2014和2013):
LAESTAB total2016 total2015 etc...\
2013614 1956000 1644000
2022019 1059000 2093000
2022036 2234000 2221000
2022065 2284000 1970000
...
我试过'减少'如下,但它返回0行×66列。
dataframe_list = [cuts2013, cuts2014, cuts2015, cuts2016]
df_final = reduce(lambda left,right: pd.merge(left,right,on='LAESTAB'), dataframe_list)
它只适用于2个数据集。我能做些什么来合并4个数据集? '错误 TypeError:无法将['left']与块值进行比较' – edachan
让我们假设您拥有名为'dataset_1,dataset_2,dataset_3和dataset_4'的数据集。 一旦合并了'dataset_1'和'dataset_2',让我们说你得到一个名为'merged_dataframe'的数据框。 现在将'dataset_3'与'merged_dataframe'合并,并用'dataset_4'重复这个过程。不是最好的想法,但它应该完成这项工作。 –
试图@ mainul-islam,但返回0行'data_merged2 = pd.merge(data_merged,cuts2014,on =“LAESTAB”)' – edachan