使用熊猫在连接的关键帧上组合子数据帧

时间:2018-11-29 13:09:26

标签: python pandas dataframe pandas-groupby

说我有以下两个熊猫数据框:

@

现在我要做的是内部,在DF1 id n_id col1 col2 col3 ... 1 1 ... ... ... 2 1 ... ... ... 3 2 ... ... ... 4 2 ... ... ... 5 4 ... ... ... 6 4 ... ... ... DF2 id n_id col1 col2 col3 ... 1 1 ... ... ... 2 1 ... ... ... 3 3 ... ... ... 4 3 ... ... ... 5 4 ... ... ... 6 4 ... ... ... 上连接这两个数据框,并将每个n_id与自定义函数{{ 1}},所以我的结果如下:

n_id

其中:

combine(DF1_n_id, DF2_n_id)

我找不到最有效的解决方案。 我的头脑首先在合并中徘徊,但这产生了具有共同价值的笛卡尔乘积。然后,我尝试加入DF_mix id n_id col1 col2 col3 ... 1 1 \ | / ... ... - df1_mix - s1_mix 1 / | \ s1_mix+1 4 \ | / ... ... - df4_mix - s4_mix+s1_mix 4 / | \ 上的by by元素,但这是不可能的。 预先感谢!

注意:
1.索引应忽略。
2. dfi_mix = combine(DF1[n_id == i], DF2[n_id == i]) si_mix = n_rows(df1_mix) 只能包含列(即n_id
3.所有数据框都具有相同的列(即DF1[n_id == i]
4. col1, col2, col3, ...代表熊猫分配的默认索引<​​/ p>

傻的例子:

id, n_id, col1, col2, col3, ...

id

DF1
id    n_id    a    b   
1     1       1    1 
2     1       1    1 
3     2       1    2
4     2       1    2
5     4       1    4
6     4       1    4


DF2
id    n_id    a   b
1     1       2   1
2     1       2   1
3     3       2   3
4     3       2   3
5     4       2   4
6     4       2   4

当然,combine(df1, df2) = pd.concat可以用任何东西替换,只要它返回列DF_mix id n_id a b 1 1 1 1 2 1 1 1 3 1 2 1 4 1 2 1 5 4 1 4 6 4 1 4 7 4 2 4 8 4 2 4 的{​​{1}}。

0 个答案:

没有答案