我有两个数据帧(df1和df2),它们是从同一datafram使用的pd.groupby。 我想根据以下逻辑有条件地创建另一个数据框(df_result):
INPUT1:df1
Type_lv1 Type_lv2 diff
count mean
t1 t_a 1 0.02
t_b 12 0.01
t2 t_a 5 0.12
t_b 22 0.11
INPUT2:df2
Type_lv1 diff
count mean
t1 13 0.011
t2 27 0.11
输出:df_result
Type_lv1 Type_lv2 diff_result
mean
t1 t_a 0.011
t_b 0.01
t2 t_a 0.11
t_b 0.11
在上面的样本数据中,由于df1中的计数为1和5(小于阈值6),因此df_result中的第一行和第三行来自df2。 我曾尝试在过去的问题中找到相关的样本,但可以得到我想要的。有人可以给我一些指示吗?
谢谢!
答案 0 :(得分:0)
想法是将df1
的第二个级别从df2
添加到MultiIndex
,因此在最后一步中可能会根据条件重新分配,只有在两个DataFrame
中都必须匹配MultiIndex的第一级别s:
m = df1[('diff','count')] < 6
mux = pd.MultiIndex.from_product([df2.index.unique(),
df1.index.get_level_values(1).unique()])
df3 = df2.reindex(mux, level=0)
df1.loc[m, ('diff','mean')] = df3[('diff','mean')]
print (df1)
diff
count mean
Type_lv1 Type_lv2
t1 t_a 1 0.011
t_b 12 0.010
t2 t_a 5 0.110
t_b 22 0.110