Implementation:TA Lib Ta lib python Pattern DataFrame Integration
Appearance
| Knowledge Sources | |
|---|---|
| Domains | Technical_Analysis, Data_Preparation |
| Last Updated | 2026-02-09 22:00 GMT |
Overview
Concrete tool for integrating pattern recognition signals into pandas/polars DataFrames via the _wrapper decorator and abstract.Function.run method.
Description
Pattern recognition results can be integrated into DataFrames through two approaches:
- Function API with _wrapper: Pass DataFrame columns (pandas/polars Series) directly to CDL functions. The _wrapper converts and preserves types.
- Abstract API: Use abstract.Function('CDLDOJI').run(df) with a dict/DataFrame containing OHLC columns.
Usage
Use either approach to add pattern columns to your analysis DataFrame.
Code Reference
Source Location
- Repository: ta-lib-python
- File: talib/__init__.py:L40-106 (_wrapper), talib/abstract.py:L13-20 (Function factory), talib/_abstract.pxi:L399-409 (run method)
Signature
# Approach 1: Function API with pandas Series
result = talib.CDLDOJI(df['open'], df['high'], df['low'], df['close'])
# Returns pd.Series with same index as input
# Approach 2: Abstract API with DataFrame
from talib import abstract
func = abstract.Function('CDLDOJI')
result = func.run(df)
# Returns pd.Series if DataFrame input
Import
import talib
from talib import abstract
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| ohlc_data | pd.DataFrame / pl.DataFrame | Yes | DataFrame with open, high, low, close columns |
Outputs
| Name | Type | Description |
|---|---|---|
| pattern_signal | pd.Series / pl.Series | Integer signal Series aligned with input DataFrame index |
Usage Examples
DataFrame Column Addition
import pandas as pd
import numpy as np
import talib
# Create OHLCV DataFrame
n = 200
df = pd.DataFrame({
'open': np.cumsum(np.random.randn(n) * 0.5) + 100,
'high': np.cumsum(np.random.randn(n) * 0.5) + 101,
'low': np.cumsum(np.random.randn(n) * 0.5) + 99,
'close': np.cumsum(np.random.randn(n) * 0.5) + 100,
}, index=pd.date_range('2024-01-01', periods=n))
# Add pattern columns
df['doji'] = talib.CDLDOJI(df['open'], df['high'], df['low'], df['close'])
df['engulfing'] = talib.CDLENGULFING(df['open'], df['high'], df['low'], df['close'])
# Filter dates with patterns
pattern_dates = df[(df['doji'] != 0) | (df['engulfing'] != 0)]
Abstract API Batch Scan
from talib import abstract
patterns = talib.get_function_groups()['Pattern Recognition']
for name in patterns:
func = abstract.Function(name)
df[name] = func.run(df)
Related Pages
Implements Principle
Page Connections
Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment