gpt4 book ai didi

python - 使用 Pandas 生成 3D "matrix",基于比较两个数据帧 [Python]

转载 作者:行者123 更新时间:2023-12-04 11:29:50 25 4
gpt4 key购买 nike

大家,早安。我正在使用 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 或一个,如下所示:
Matrix 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
    你是编程专家,请指导我,当我生成这个矩阵时,我比较了这些值。我想用 Pandas 来做。我已经使用循环 (for) 和条件 (if) 完成了它,但它在视觉上令人不快,而且我认为使用 Pandas 它更高效和优雅。
    谢谢你。

    最佳答案

    NumPy broadcasting np.select
    广播并乘以 df_C 中的值来自 df_F 的值这样生成的乘积矩阵的形状将为 (3, 7, 5) ,然后测试乘积矩阵中的值为正、负或零的条件并分配相应的值 1 , 0NaN条件成立

    a = df_C.values.T[:, :, None] * df_F.values
    a = np.select([a > 0, a < 0], [1, 0], np.nan)
    array([[[ 1.,  0.,  1.,  1.,  1.],
    [ 1., 1., 1., 1., 1.],
    [ 1., 1., 1., 0., 1.],
    [ 0., 1., 1., 1., 0.],
    [ 1., nan, nan, 1., 1.],
    [ 1., 1., 1., 0., nan],
    [ 1., 1., 0., 1., 0.]],

    [[ 1., 0., 1., 1., 1.],
    [ 1., 1., 1., 1., 1.],
    [ 1., 1., 1., 0., 1.],
    [ 0., 1., 1., 1., 0.],
    [ 1., nan, nan, 1., 1.],
    [ 1., 1., 1., 0., nan],
    [ 1., 1., 0., 1., 0.]],

    [[ 1., 0., 1., 1., 1.],
    [ 1., 1., 1., 1., 1.],
    [ 1., 1., 1., 0., 1.],
    [ 0., 1., 1., 1., 0.],
    [ 1., nan, nan, 1., 1.],
    [ 1., 1., 1., 0., nan],
    [ 1., 1., 0., 1., 0.]]])

    关于python - 使用 Pandas 生成 3D "matrix",基于比较两个数据帧 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67646341/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com