说我有以下两个熊猫数据框:
@
现在我要做的是内部,在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}}。