首页 > 解决方案 > 在 Pandas 列中输入列表值

问题描述

给定如下列表:

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'

标签: pythonpandas

解决方案


这将使用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

推荐阅读