现有两张表,请在df1中剔除在df2中出现过的行。
df1 = pd.DataFrame({
"A": [3,2,2,3,1,3],
"B": [2,1,1,3,6,2],
"C": [1,2,2,7,7,1],
"D": [5,6,6,1,2,5],
})
df2 = pd.DataFrame({
"A": [2,3,1],
"B": [1,9,6],
"C": [2,7,7],
"D": [6,1,2],
})
df1.set_index(df1.columns.tolist(),inplace=True)
df2.set_index(df2.columns.tolist(),inplace=True)
df1.loc[df1.index.difference(df2.index)].reset_index(drop=False)
某个城市共有4个学区,每个学区有若干学校,学校之间名字互不相同。每一条记录为该学校开设的课程,一个学校可能有多条记录,每一条记录内部的课程不会重复,但同一学校不同记录之间的课程可能重复。
df = pd.read_csv('../data/supplement/ex5/school_course.csv')
df.Area.unique()
df['Course']=df.Course.str.split(' ')
df=df.explode('Course')
df=df.groupby(['Area','Course'])['School'].count().unstack(0).fillna(0)
df.rename_axis(columns={'Area':''},inplace=True)
df
给定如下的数据框,请返回非零行列组合构成的多级索引。
df = pd.DataFrame(
[[0,5,0],[2,1,0],[0,0,6],[0,9,0]],
index=list("ABCD"), columns=list("XYZ"))
df.reset_index(drop=False,inplace=True)
res=df.melt(id_vars=['index'],value_vars=['X','Y','Z'],var_name='XYZ',value_name='count')
res.groupby(['index','XYZ']).sum().query('count==0').index
out
MultiIndex([('A', 'X'),
('A', 'Z'),
('B', 'Z'),
('C', 'X'),
('C', 'Y'),
('D', 'X'),
('D', 'Z')],
names=['index', 'XYZ'])
(只坐出来第一题)
某公司构建了一个分布式文件集群,它共有134台服务器构成,分别存放在五个机房,R0机房存有23台,R1机房存有16台,R2机房存有47台,R3机房存有30台,R4机房存有18台,每个机房的服务器编号从001开始。运维人员通过日志收集功能得到了如下所示的集群在2022年9月27日的文件历史传输记录,其每一行构成如下:方括号中显示了当前操作是否为向其他服务器发出文件的操作(PUSH)还是接收其他服务器文件的操作(SAVE)及其对应的操作时间。Cluster#R?#???表示了当前操作的机器编号,Cluster#R4#014表示R4机房的第14号机器;再后面的十位字符串代表了传输文件的唯一标识,如果某一个条记录为SAVE操作的机器接收了XXX文件,那么一定会有另一台机器PUSH这个XXX文件的记录;对于PUSH记录而言,最后的信息表示发出文件的大小,对于SAVE记录而言,最后的信息表示接收到文件的大小,若同一对PUSH记录和SAVE记录的文件大小不一致,那么表明本次文件传输最终处于未完成状态(Unfinished)。
data=pd.read_table("../data/supplement/ex7/logs.txt",sep='|',names=['operation_time','id','file_id','save_fize'],engine='python')
data.operation_time=data.operation_time.str.replace('[\[]','',regex=True)
data.id=data.id.str.replace('Cluster#','',regex=True)
data.id=data.id.str.replace('#','-')
res=data.id.str.split('] ',n=2,expand=True)
data['time']=res[0]
data['id']=res[1]
data=data.merge(data,on='file_id',how='left').query("id_x!=id_y").query('operation_time_x=="PUSH"')
data=data.rename(columns={'save_fize_x':'file_size','save_fize_y':'save_size','id_x':'push_from','id_y':'push_to','time_x':'push_time','time_y':'save_time'})
data=data[['file_id','file_size','save_size','push_from','push_to','push_time','save_time']]
data