【问题标题】:Entering List Values in Pandas Columns在 Pandas 列中输入列表值
【发布时间】:2019-09-24 02:02:47
【问题描述】:

给定一个列表如下:

l = [['43.195', '-22.17', '-43.17', '-22.198', '-43.198', '22.197'], ['43.196', '-22.14', '-43.179', '-22.188', '-43.188', '22.192']]

我需要将此列表中的值添加到数据框的两个单独列中。示例:l 的子列表索引为偶数 (l [0] [0], l [0] [2], l [1] [0], etc.) 的值转到 LATITUDE 列;和 l 的子列表索引为奇数的值(l [0] [1], l [0] [3], l [1] [1], etc.),转到LONGITUDE 列。数据框已存在,但 LATITUDELONGITUDE 列不存在。

我正在尝试以下方法,但未成功:

d = pd.DataFrame()
i = 0
j = 0
if i < len(l):
   if j < len(l[i]) and j%2==0:
      d['LATITUDE'] = ', '.join(map(str, l[i][j]))
      j += 1
   elif j < len(l[i]) and j%2!=0:
      d['LONGITUDE'] = ', '.join(map(str, l[i][j]))
      j+=1
   i += 1
d

注意:每个子列表对应一个 Dataframe 实例。

预期输出:

         LATITUDE             |     LONGITUDE
'-43.195', '-43.17', -43.198  | '-22.17', '-22.198', '-22.197'
'-43.196', '-43.179', -43.192 | '-22.14', '-22.188', '-22.192'

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这将使用reshape

    pd.concat([pd.Series([x[::2],x[1::2]]).str.join(sep=',') for x in l],1).T
    Out[280]: 
                            0                      1
    0   43.195,-43.17,-43.198  -22.17,-22.198,22.197
    1  43.196,-43.179,-43.188  -22.14,-22.188,22.192
    

    【讨论】:

      【解决方案2】:

      IIUC,您希望以字符串格式输出。您可以使用 numpy strides 和 mapjoin 创建值字符串

      a = np.array(l)
      pd.DataFrame({'LATITUDE': map(', '.join, a[...,::2]), 'LONGTITUDE': map(', '.join, a[...,1::2])})
      
      Out[416]:
                         LATITUDE               LONGTITUDE
      0   43.195, -43.17, -43.198  -22.17, -22.198, 22.197
      1  43.196, -43.179, -43.188  -22.14, -22.188, 22.192
      

      【讨论】:

      • @Costa.Gustavo:在您的l 样本数据中
      【解决方案3】:

      您可以使用下面的 itertools 的链功能来完成

      from itertools import chain
      import pandas as pd
      l = [['43.195', '-22.17', '-43.17', '-22.198', '-43.198', '22.197'], ['43.196', '-22.14', '-43.179', '-22.188', '-43.188', '22.192']]
      
      chained = list(chain(*l))
      pd.DataFrame(dict(LATITUDE=chained[::2], LONGITUDE=chained[1::2]))
      

      【讨论】:

      • 因此它没有将子列表的偶数索引与奇数索引分开。
      • @Costa.Gustavo 是我的错,你可以使用链函数
      猜你喜欢
      • 2023-03-31
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2018-05-10
      • 1970-01-01
      相关资源
      最近更新 更多