Python 熊猫:基于公共列名将多个数据帧中的列提取到新的数据帧中
我有4个从Excel导入的数据集,包含2013年、2014年、2015年和2016年学校的总预算。所有数据集都有一个公共列,其中包含每个学校的ID代码(列LAESTAB) 我想要一个新的数据集,左边是公共列LAESTAB(4个数据集的值相同),接下来是列total2013、total2014、total2015和total2016(来自不同的数据集) 我还想去掉其余的数据,包括并非所有数据集中都存在的学校ID 我将尝试在一个示例中进一步阐述: 以下是其中一个Excel数据集的示例:Python 熊猫:基于公共列名将多个数据帧中的列提取到新的数据帧中,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,我有4个从Excel导入的数据集,包含2013年、2014年、2015年和2016年学校的总预算。所有数据集都有一个公共列,其中包含每个学校的ID代码(列LAESTAB) 我想要一个新的数据集,左边是公共列LAESTAB(4个数据集的值相同),接下来是列total2013、total2014、total2015和total2016(来自不同的数据集) 我还想去掉其余的数据,包括并非所有数据集中都存在的学校ID 我将尝试在一个示例中进一步阐述: 以下是其中一个Excel数据集的示例: >&g
>>> 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
2005年的另一个Excel数据集:
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
我需要的最终结果如下(应显示total2014和total2013):
我尝试了下面的“reduce”,但它返回0行×66列
dataframe_list = [cuts2013, cuts2014, cuts2015, cuts2016]
df_final = reduce(lambda left,right: pd.merge(left,right,on='LAESTAB'), dataframe_list)
使用LAESTAB列合并dataframes SQL样式,然后根据需要从
data\u merged
中删除列
import pandas as pd
data_merged = pd.merge(cuts2016,cuts2015,on = "LAESTAB")
有关合并的详细信息,请查看以下链接:
使用LAESTAB列合并dataframes SQL样式,然后根据需要从
data\u merged
中删除列
import pandas as pd
data_merged = pd.merge(cuts2016,cuts2015,on = "LAESTAB")
有关合并的详细信息,请查看以下链接:
一种方法是使用merge,正如Mainul Islam指出的那样。在这里,您必须执行3个合并操作来合并4个数据帧。否则,您可以连接所有4个数据帧并执行groupby操作
dataframe_list = [cuts2013, cuts2014, cuts2015, cuts2016]
total = pd.concat(dataframe_list)
total = total.groupby('LAESTAB')['total2013', 'total2014', 'total2015','total2016'].sum().reset_index()
一种方法是使用merge,正如Mainul Islam指出的那样。在这里,您必须执行3个合并操作来合并4个数据帧。否则,您可以连接所有4个数据帧并执行groupby操作
dataframe_list = [cuts2013, cuts2014, cuts2015, cuts2016]
total = pd.concat(dataframe_list)
total = total.groupby('LAESTAB')['total2013', 'total2014', 'total2015','total2016'].sum().reset_index()
它只适用于2个数据集。如何合并4个数据集<代码>错误类型错误:无法将['left']与块值进行比较假设您有名为
dataset\u 1、dataset\u 2、dataset\u 3和dataset\u 4的数据集
。一旦您合并了dataset\u 1
和dataset\u 2
,我们假设您得到一个名为merged\u dataframe
的数据帧。现在将dataset\u 3
与merged\u dataframe
合并,并使用dataset\u 4
重复该过程。这不是最好的主意,但它应该能完成任务。尝试过@mainul islam,但返回0行data\u merged2=pd。merge(data\u merged,cuts2014,on=“LAESTAB”)
它只适用于2个数据集。如何合并4个数据集<代码>错误类型错误:无法将['left']与块值进行比较假设您有名为dataset\u 1、dataset\u 2、dataset\u 3和dataset\u 4的数据集
。一旦您合并了dataset\u 1
和dataset\u 2
,我们假设您得到一个名为merged\u dataframe
的数据帧。现在将dataset\u 3
与merged\u dataframe
合并,并使用dataset\u 4
重复该过程。这不是最好的主意,但它应该可以完成任务。尝试了@mainul islam,但返回0行data\u merged2=pd.merge(data\u merged,cuts2014,on=“LAESTAB”)