合并两个具有复杂条件的Pandas数据框架
在这篇文章中,我们来讨论如何合并两个具有复杂条件的Pandas数据框架。Pandas中的数据框架可以使用pandas.merge()方法进行合并。
语法:
pandas.merge(parameters)
返回:两个合并对象的DataFrame。
在处理数据集时,可能需要合并两个具有某些复杂条件的数据框架,下面是一些合并两个具有某些复杂条件的数据框架的例子。
例子1 :
用merge()函数合并两个数据框架,参数为两个数据框架。
# importing pandas as pd
import pandas as pd
# creating dataframes
df1 = pd.DataFrame({'ID': [1, 2, 3, 4],
'Name': ['John', 'Tom', 'Simon', 'Jose']})
df2 = pd.DataFrame({'ID': [1, 2, 3, 5],
'Class': ['Second', 'Third', 'Fifth', 'Fourth']})
# merging df1 and df2 with merge function
df = pd.merge(df1, df2)
print(df)
输出 :
例子2 :
用merge()函数将两个数据框架合并到数据框架的某些指定列名上。
# importing pandas as pd
import pandas as pd
# creating dataframes
df1 = pd.DataFrame({'Name': ['John', 'Tom', 'Simon', 'Jose'],
'Age': [5, 6, 4, 5]})
df2 = pd.DataFrame({'Name': ['John', 'Tom', 'Jose'],
'Class': ['Second', 'Third', 'Fifth']})
# merging df1 and df2 with merge function
# with the common column as Name
df = pd.merge(df1, df2, on='Name')
print(df)
输出 :
例子3 :
用第一个数据框中的所有值合并两个数据框,用NaN表示第二个数据框中不匹配的值。同样可以用第二个数据框的所有值进行合并,我们要做的只是在合并时给出数据框的位置,即左边或右边。
# importing pandas as pd
import pandas as pd
# creating dataframes
df1 = pd.DataFrame({'Name': ['John', 'Tom', 'Simon', 'Jose'],
'Age': [5, 6, 4, 5]})
df2 = pd.DataFrame({'Name': ['John', 'Tom', 'Jose'],
'Class': ['Second', 'Third', 'Fifth']})
# merging df1 and df2 with merge function
# with the common column as Name
df = pd.merge(df1, df2, on='Name', how="left")
print(df)
输出 :
例子4 :
使用外部连接的合并函数将两个数据框架的所有值合并起来。同样的,也可以用内联接来连接两个数据框。
# importing pandas as pd
import pandas as pd
# creating dataframes
df1 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Jose'],
'Age':[5, 6, 4, 5]})
df2 = pd.DataFrame({'Name':['John', 'Tom', 'Philip'],
'Class':['Second', 'Third', 'Fifth']})
# merging df1 and df2 with merge function
# with the records of both the dataframes
df = pd.merge(df1, df2, how = "outer")
print(df)
输出 :
例子5 :
用指标值合并数据帧,看哪个数据帧有该特定记录。
# importing pandas as pd
import pandas as pd
# creating dataframes
df1 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Jose'],
'Age':[5, 6, 4, 5]})
df2 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Tom'],
'Class':['Second', 'Third', 'Fifth', 'Fourth']})
# merging df1 and df2 with merge function
# with the records of both the dataframes
df = pd.merge(df1, df2, how = 'left', indicator = True)
print(df)
输出 :
例子6 :
在两个数据框中合并具有一对多关系的数据框。同样可以用多对多、一对一和一对多类型的关系来合并。
# importing pandas as pd
import pandas as pd
# creating dataframes
df1 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Jose'],
'Age':[5, 6, 4, 5]})
df2 = pd.DataFrame({'Name':['John', 'Tom', 'Simon', 'Tom'],
'Class':['Second', 'Third', 'Fifth', 'Fourth']})
# merging df1 and df2 with merge function with
# the one to many relations from both the dataframes
df = pd.merge(df1, df2, validate = 'one_to_many')
print(df)
输出 :