提问人:mouwsy 提问时间:9/8/2023 最后编辑:mouwsy 更新时间:9/8/2023 访问量:89
相当于 pandas .append() 方法,允许方法链接
Equivalent of pandas .append() method, which allows method chaining
问:
现在它在 pandas 2.0 中已经弃用了,那么除了允许方法链接之外,还有什么简短的替代方案呢?
pandas 的“2.0.0 中的新功能”部分说:append()
append()
删除了已弃用的 、 、 改用 (GH 35407)
Series.append()
DataFrame.append()
concat()
我正在寻找一些简单的东西,就像下面的例子一样,只添加一行,但它需要是可以包含在方法链中的东西。
import pandas as pd
df = pd.DataFrame([
[4, 5, 6],
[7, 8, 9],
[1, 6, 4]])
df.loc[len(df)] = [10, 20, 30]
答:
1赞
mozway
9/8/2023
#1
out = (df
#.some_method()
.pipe(lambda d: pd.concat(
[d, pd.DataFrame([[10, 20, 30]],
columns=df.columns)],
ignore_index=True)
)
#.some_other_method()
)
或者,如果添加行是第一步:
out = (pd.concat([d, pd.DataFrame([[10, 20, 30]],
columns=df.columns)],
ignore_index=True)
#.other_methods()
)
输出:
0 1 2
0 4 5 6
1 7 8 9
2 1 6 4
3 10 20 30
请注意,添加新行的成本很高,因为这会创建一个全新的 DataFrame。如果你做一两次,但不要在一个循环中做,这很好,否则对于大型数据集来说,这会非常慢。
评论
concat
可以位于链的顶端;你试过了吗?如果它需要在中间,你知道吗?df.pipe