【问题标题】:zip a list with space delimited into tuple将带有空格分隔的列表压缩成元组
【发布时间】:2020-09-20 10:25:33
【问题描述】:

我有一个数据框df,其中有一个名为columnList 的列作为str。

"1 2,7 8,10 7"

然后我将它们转换为如下所示的列表:

[1 2,7 8,10 7]

我想将列表中的值转换为元组:

[(1,2),(7,8),(10,7)]

当前代码:

temp = df['columnList'].str.split(',')
result = list(zip(temp[::2], temp[1::2]))
print(result)

我得到的是空列表。

df 看起来像这样:

column1    columnList
  YY      1 2,7 8,10 7

名称:df,dtype:对象

【问题讨论】:

    标签: python list dataframe tuples


    【解决方案1】:

    这里不需要使用zip,只需遍历列表,拆分每个元素并将其存储为元组即可。

    l = [ '1 2', '7 8', '10 7']
    [tuple(int(i) for i in numbers.split()) for numbers in l]
    
    #[(1, 2), (7, 8), (10, 7)]
    

    【讨论】:

      【解决方案2】:

      您可以将字符拆分后映射为整数,然后将映射对象转换为元组:

      temp = df['columnList'].str.split(',')
      result = [tuple(map(int, num.split())) for num in temp]
      print(result)
      # [(1, 2), (7, 8), (10, 7)]
      

      【讨论】:

        【解决方案3】:

        试试这个,

        df.columnsList.apply(lambda x : 
                [tuple(map(int, x.split())) for x in "1 2, 7 8, 10 7".split(",")])
        

        输出,

        0    [(1, 2), (7, 8), (10, 7)]
        Name: columnsList, dtype: object
        

        【讨论】:

        • 它可以工作,但数字不会转换为浮点数。它在字符串中
        • 这也有效:apply(lambda x : [tuple(map(float,x.split())) for x in x.split(",")]) 谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 2020-12-11
        • 2018-08-17
        • 1970-01-01
        • 2016-01-23
        • 2014-08-26
        相关资源
        最近更新 更多