跳转到内容

链式调用:把操作串联成流水线

Pandas 的很多方法返回新的 DataFrame 而不是修改原对象(函数式设计)。这意味着你可以用 . 把多个操作链式地串起来——让整个数据处理流程变成一条可读的"句子"。

基本链式调用

python
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'text': ['Hello', 'ERROR: timeout', '  extra spaces  ', None, 'OK'],
    'value': [10, 20, 30, 40, 50],
})

result = (
    df.dropna()
    .assign(clean_len=lambda d: d['text'].str.strip().str.len())
    .query('clean_len > 2')
    .sort_values('value', ascending=False)
)

print(result)

每个 . 的结果都是一个新的 DataFrame,下一个方法在这个新 DataFrame 上操作。链式调用的核心优势是可读性:你不需要创建中间变量,整个流程从上到下一目了然。

pipe():在链条中插入任意函数

python
def custom_clean(df):
    df = df.copy()
    df['word_count'] = df['text'].str.split().str.len()
    return df[df['word_count'] > 1]

result = df.pipe(custom_clean).head()

当你的操作无法用 Pandas 内置方法表达时(比如需要多步复杂逻辑),pipe() 让你在链条中插入一个自定义的 Python 函数。它接收当前 DataFrame 作为参数,返回处理后的 DataFrame 继续传递给链条上的下一个方法。

基于 MIT 许可发布