首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyArrow :如何将两列连接成一个新列?(多索引处理)

PyArrow :如何将两列连接成一个新列?(多索引处理)
EN

Stack Overflow用户
提问于 2022-07-25 18:09:46
回答 1查看 175关注 0票数 1

所以,我最近一直在使用pyarrow,我需要用它来做一些我已经在dask /熊猫做过的事情:我有这个多索引数据,我需要从这个索引中删除重复的数据,然后根据它们的索引选择行来替换它们。

为了处理多个索引,我想将我的两个索引列连接到另一个列中,这样我就可以像使用一个索引一样使用它。这就是我对达斯克做的事,它起了作用.

如何将两列串联成一个新列?

我的数据看起来是这样的:

代码语言:javascript
复制
table1 = pa.table({'num1': [1, 2, 3, 5, 8, 5],
                   'date': [2017-4, 2018-6, 2017-4, 2018-9, 2016-7, 2018-6],
                   'data': ["some-data", "other-stuff", Null, Null, "data", "data", Null]})

table2 = pa.table({'num1': [2, 3, 5],
                   'date': [ 2018-6, 2017-4, 2018-9],
                   'data': ["new-data", "data that was missing", "data"]})

我需要连接num1和date。我已经尝试过concat_arrays函数,但是它最后添加了第二个数组的元素,所以不是我想要的。

我也尝试过:

代码语言:javascript
复制
a = lct.select(["num1"])
b = lct.select(["date"])

lst = []
for i in range(len(a)):
    for j in range(len(a[i])):
        lst.append(str(a[i][j]) + str(b[i][j]))

我知道pyarrow类型是不可变的,所以我想创建一个列表,稍后再转换成一个数组,然后迭代我必须将数据连接在一起的数组。但也有几个问题:

首先,它需要时间。然后,用这个索引检索一些更复杂的东西,它会为a[i].抛出一个IndexError (索引超出范围)。

我还考虑过将两个数据流与concat_tables连接起来,并对我需要的和不需要的数据进行排序,但我仍然有同样的问题:如何使用的两个列来选择数据?

我还尝试将这两个数据文件连接在一起,我想加入键列上的dataframes,然后删除无用的数据。

代码语言:javascript
复制
table_valid = table1.join(table2, keys=['num1', 'date'], join_type="left anti")

我打算使用几种连接类型来查看什么可以工作,但是我不能做任何连接,因为键不能有空类型。我想,我有一些键,其中包含一些空值。因此,知道了这一点,我想从键中删除空值:

代码语言:javascript
复制
iter1 = pc.drop_null(table1["num1"])
iter2 = pc.drop_null(iter1["date"])

table_valid = iter2.join(table2, keys=['num1', 'date'], join_type="left anti")

这本来是个好主意,但试图将iter2加入到table2中,我得到了以下错误:'pyarrow.lib.ChunkedArray' object has no attribute 'join'

我知道我可以在熊猫身上做这一切,但我真的很想和比罗一起做,我真的不知道怎么做.

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-26 09:39:40

如果您试图将两列水平连接为字符串,则可以这样做:

代码语言:javascript
复制
import pyarrow.compute as pc

pc.binary_join_element_wise(
    pc.cast(table1['num1'], pa.string()),
    pc.cast(table1['date'], pa.string()),
    "-"
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73113581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档