我看到可以使用series命名空间(https://stackoverflow.com/a/70599059/5363883)进行追加,我想知道是否有类似的方法来追加或连接DataFrame。
在pandas
中,以前可以用df1.append(df2)
来实现,但是对于pd.concat([df1, df2])
,该方法正在被弃用(如果它还没有被弃用的话)。
DF1
| 项目a| B|(c)秘书长的报告|
| - ------|- ------|- ------|
| 1个|第二章|三个|
DF2
| 项目a| B|(c)秘书长的报告|
| - ------|- ------|- ------|
| 四个|五个|六个|
雷斯
| 项目a| B|(c)秘书长的报告|
| - ------|- ------|- ------|
| 1个|第二章|三个|
| 四个|五个|六个|
2条答案
按热度按时间cdmah0mi1#
根据您的需要,有不同的
append
策略。要理解它们的区别,重要的是要理解polars内存是不可变的
iff
它有任何副本。polar中的副本是自由的,因为它只增加后备内存缓冲区的引用计数,而不是复制数据本身。
但是,如果内存缓冲区还没有副本,例如
refcount == 1
,我们可以修改polars内存。了解此背景后,可以使用以下方法附加数据:
concat
-〉concatenate all givenDataFrames
.这是DataFrames
的一个链表.如果你传递rechunk=True
,所有的内存将被重新分配给连续的块.vstack
-〉通过增加一个引用计数将other
中的数据添加到DataFrame
中。这是非常便宜的。建议在许多vstacks
之后调用rechunk。或者简单地使用pl.concat
。extend
此操作复制数据。它尝试将数据从其他复制到DataFrame
。但是,如果DataFrame
的refcount
大于1
,则分配新的内存缓冲区以容纳两个DataFrames
。vngu2lb82#
看起来.extend()变异
df1
以将其内存 * 扩展 * 到df2
。这是有道理的,但是如果我想创建一个完全不同的(在内存中也是如此)
df3
,我猜应该是对于不太冗长的方法的任何反馈都将受到欢迎。