三行代码  ›  专栏  ›  技术社区  ›  user17475933

列表理解未按预期工作

  •  0
  • user17475933  · 技术社区  · 1 月前

    enter image description here

    使用以下代码拆分每列中的数据:

        col_names = ['col1','col2','col3']
        for i in range(len(df)):
            s = tuple(zip(df[col_names[0]].str.split(",")[i],df[col_names[1]].str.split(",")[i],df[col_names[2]].str.split(",")[i])
    

    我更改了此代码,使其能够动态工作,以便使用列表理解来处理col_名称中的可变列数,如下所示:

    for i in range (len(df)):
        s = tuple(zip(df[col].str.split(",")[i] for col in col_names)
    

    enter image description here

    但现在添加列表后,它看起来像:

    enter image description here

    这个代码有什么问题?

    1 回复  |  直到 1 月前
        1
  •  2
  •   Frank Yellin    1 月前

    #1) 您的代码在调用后效率极低 df[col].str.split(",") 一次又一次地 i .

    #2) 你眼前的问题是拉链。您正在将其作为参数传递给单个迭代器。您需要将多个参数传递给它。正确的转换方法是 zip(*(........))