第五章:合并
问题
【问题一】 append/assign/combine/update/concat/merge/join各自最适合使用的场景,并举出相应的例子。
【问题二】 merge_ordered和merge_asof?和merge是什么关系?
merge_ordered:
函数允许组合时间序列和其他有序数据。 特别是它有一个可选的fill_method关键字来填充/插入缺失的数据。
merge_asof
除了我们匹配最近的键而不是相等的键之外,其他的都类似于有序的left-join 。 对于左侧DataFrame中的每一行,我们选择右侧DataFrame中on键对应的值小于left的键对应的值的最后一行。 两个DataFrame必须按键排序。
【问题三】 请构造一个多级索引与多级索引合并的例子,尝试使用不同的合并函数。
【问题四】 上文提到了连接的笛卡尔积,那么当连接方式变化时(inner/outer/left/right),这种笛卡尔积规则会相应变化吗?
练习
一:
(a)
import pandas as pd
import numpy as np
df1=pd.read_csv('C:/Users/76709/Desktop/4.18组对学习pandas/joyful-pandas-master/data/Employee1.csv')
df2=pd.read_csv('C:/Users/76709/Desktop/4.18组对学习pandas/joyful-pandas-master/data/Employee2.csv')
list(set(df1['Name']).intersection(set(df2['Name'])))
(b)
df_b1 = df1[~df1['Name'].isin(list(set(df1['Name']).intersection(set(df2['Name']))))]
df_b2 = df2[~df2['Name'].isin(list(set(df1['Name']).intersection(set(df2['Name']))))]
pd.concat([df_b1,df_b2]).set_index('Name')
(c)
二:
(a)
df1 = pd.read_csv('C:/Users/76709/Desktop/4.18组对学习pandas/joyful-pandas-master/data/Course1.csv')
df2 = pd.read_csv('C:/Users/76709/Desktop/4.18组对学习pandas/joyful-pandas-master/data/Course2.csv')
df_11= df1.query('课程类别 in ["学科基础课","专业必修课","专业选修课"]')
df_12= df1.query('课程类别 not in ["学科基础课","专业必修课","专业选修课"]')
df_21= df2.query('课程类别 in ["学科基础课","专业必修课","专业选修课"]')
df_22= df2.query('课程类别 not in ["学科基础课","专业必修课","专业选修课"]')
参考答案中的 df_a11,df_a12,df_a21,df_a22 =0,0,0,0 未看懂
(b)
(c)
(d)