将新列数组添加到Pandas数据框

时间:2020-01-16 22:14:37

标签: python pandas dataframe

如何将整数列表作为新列追加到Pandas数据框中的每一行?

我有一个数据框,需要将20列整数序列附加为新列。用例是我将行单元格中的自然文本转换为使用Tensorflow的某些NLP的矢量序列。

但是为了说明,我创建了一个简单的数据框来追加:

"SELECT shops.*, (6371000 * acos(cos(radians(poi.lat )) \
  * cos(radians(shops.lat)) * cos(radians(shops.lon) - radians(poi.lon )) \
  + sin(radians(poi.lat )) * sin(radians(shops.lat)))) AS distance FROM shops \
  CROSS JOIN poi WHERE   poi.name like '%"+req.query.poi+"%' AND (6371000 \
    * acos(cos(radians(poi.lat)) * cos(radians(shops.lat)) \
    * cos(radians(shops.lon) - radians(poi.lon )) + sin(radians(poi.lat)) \
    * sin(radians(shops.lat)))) < "+req.query.radius+" AND shops.type like \
    '%"+shoptype+"%'AND shops.name like '%"+shopname+"%'";

哪个生成输出:

enter image description here

然后,对于每一行,我需要传递一个函数,该函数在列“ 2”中采用一个特定的值,并将返回一个整数数组,该整数数组需要作为列附加在数据帧中,而不是一个单元格中的一个数组:

df = pd.DataFrame([(1, 2, 3),(11, 12, 13)])
df.head()

理想情况下,运行类似这样的功能

def foo(x):
    return [x+1, x+2, x+3]

enter image description here

我唯一想到的解决方案是创建带有3个空白列df[3, 4, 5] = df['2'].applyAsColumns(foo) 的数据框,然后使用[3,4,5]循环遍历空白列,然后将它们作为值输入到循环。

这是最好的方法吗,还是Pandas内置了一些可以做到这一点的功能?我尝试检查文档,但未找到任何内容。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

IIUC,

def foo(x):
    return pd.Series([x+1, x+2, x+3])

df = pd.DataFrame([(1, 2, 3),(11, 12, 13)])

df[[3,4,5]] = df[2].apply(foo)

df

输出:

    0   1   2   3   4   5
0   1   2   3   4   5   6
1  11  12  13  14  15  16