使用Pandas生成3D“矩阵”,基于比较两个数据帧[Python]
大家,早安。我正在使用 Python 和 Pandas。
我有两个数据帧,类型如下:
df_C = pd.DataFrame(data=[[-3,-1,-1], [5,3,3], [3,3,1], [-1,-1,-3], [-3,-1,-1], [2,3,1], [1,1,1]], columns=['C1','C2','C3'])
C1 C2 C3
0 -3 -1 -1
1 5 3 3
2 3 3 1
3 -1 -1 -3
4 -3 -1 -1
5 2 3 1
6 1 1 1
df_F = pd.DataFrame(data=[[-1,1,-1,-1,-1],[1,1,1,1,1],[1,1,1,-1,1],[1,-1,-1,-1,1],[-1,0,0,-1,-1],[1,1,1,-1,0],[1,1,-1,1,-1]], columns=['F1','F2','F3','F4','F5'])
F1 F2 F3 F4 F5
0 -1 1 -1 -1 -1
1 1 1 1 1 1
2 1 1 1 -1 1
3 1 -1 -1 -1 1
4 -1 0 0 -1 -1
5 1 1 1 -1 0
6 1 1 -1 1 -1
我希望能够“交叉”这两个数据帧,以生成 3D 或一个,如下所示:
生成的新数据必须将df_F的值与df_C的值进行比较,同时考虑以下因素:
- 如果两个值都为正,则生成 1
- 如果两个值都是负数,则生成 1
- 如果一个值为正,另一个为负,则生成 0
- 如果任何值为零,则生成 None (NaN)
真表
df_C与df_F数据对比
df_C vs df_F = 3D
+ + 1
+ - 0
+ 0 None
- + 0
- - 1
- 0 None
0 + None
0 - None
0 0 None
你是编程专家,请指导我,当我生成这个矩阵时,我比较了这些值。我想用熊猫来做。我已经用循环 (for) 和条件 (if) 完成了它,但它在视觉上令人不快,我认为使用 Pandas 它更高效和优雅。
谢谢你。