【问题标题】:Creating a table/dataframe for one to many join为一对多连接创建表/数据框
【发布时间】:2021-10-18 17:32:18
【问题描述】:

我正在尝试编写一个执行以下操作的函数

def OneToMany(2):

返回给我一个下表:

Num Join
2 2
2 1
2 0
1 1
1 0

该函数应该适用于任何数字来代替 2。

【问题讨论】:

    标签: python dataframe join arraylist


    【解决方案1】:

    希望我的理解正确:

    def OneToMany(n):
        return pd.DataFrame(
            {"Num": i, "Join": j} for i in range(n, 0, -1) for j in range(i, -1, -1)
        )
    
    
    print(OneToMany(2))
    

    打印:

       Num  Join
    0    2     2
    1    2     1
    2    2     0
    3    1     1
    4    1     0
    

    【讨论】:

    • 这完全有效!万分感谢!仅出于教育目的 - 你能解释一下这个脚本是如何工作的,以及你用来实现这一点的嵌套 for 循环吗?我和我的朋友只是在这里绞尽脑汁,试图理解这背后的逻辑。谢谢!
    • @TejusArora 尝试通过将理解 [{"Num": i, "Join": j} for i in range(n, 0, -1) for j in range(i, -1, -1)] 重写为分隔行来调试代码。基本上,它会创建字典列表[{"Num":xx, "Join":xx}, ...],然后 pandas 会从中创建数据框。
    • 知道了!我刚刚被第二个 for 循环中的 -1 STOP 条件吓倒了,并意识到 STOP 条件不包含在内。再次感谢!
    猜你喜欢
    • 2019-11-07
    • 2022-01-20
    • 2014-09-12
    • 2016-12-08
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多