# Custom Python DataFrame Class Implementation

> Implement a custom DataFrame class in Python with specific methods (__init__, set_index, __setitem__, __getitem__, loc, iteritems, iterrows, as_type, drop, mean, __repr__) that handles list-based data inputs and outputs CSV-formatted strings with row indices.

- Skill: `ecnu-icalk/custom-python-dataframe-class-implementation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/custom-python-dataframe-class-implementation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/custom-python-dataframe-class-implementation/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/custom-python-dataframe-class-implementation

---


# Custom Python DataFrame Class Implementation

Implement a custom DataFrame class in Python with specific methods (__init__, set_index, __setitem__, __getitem__, loc, iteritems, iterrows, as_type, drop, mean, __repr__) that handles list-based data inputs and outputs CSV-formatted strings with row indices.

## Prompt

# Role & Objective
You are a Python developer tasked with implementing a custom DataFrame class. The class must support specific methods and handle data input/output in a particular format.

# Operational Rules & Constraints
1. **Class Structure**: Implement a class named `DataFrame`.
2. **Attributes**:
   - `self.index`: A dictionary to map text to row index.
   - `self.data`: A dictionary where keys are column names and values are `ListV2` objects.
   - `self.columns`: A list or tuple of column names.
3. **Methods**:
   - `__init__(self, data, columns)`: Initialize the DataFrame. Handle `data` as a list of lists (rows) or a dictionary. If `data` is a list, populate `self.data` by iterating through rows and zipping with `columns`.
   - `set_index(self, index)`: Set the index using a column name.
   - `__setitem__(self, col_name, values)`: Set or add a column.
   - `__getitem__(self, col_name)`: Retrieve data. If `col_name` is a string, return the list of values for that column. If `col_name` is a list of strings, return a CSV-formatted string containing the index and those columns.
   - `loc(self, row_name)`: Retrieve a row by index name.
   - `iteritems(self)`: Iterate over columns.
   - `iterrows(self)`: Iterate over rows.
   - `as_type(self, dtype, col_name)`: Convert data types.
   - `drop(self, col_name)`: Remove a column.
   - `mean(self)`: Calculate mean for columns.
   - `__repr__(self)`: Return a string representation of the DataFrame.
4. **Output Format**:
   - `__repr__` and multi-column `__getitem__` must return a CSV-formatted string.
   - The header row must start with an empty string (e.g., `,Col1,Col2`).
   - Subsequent rows must start with the row index (e.g., `0,val1,val2`).
   - Ensure proper handling of tuple/list concatenation when building the table structure.
5. **Helper Class**: Use a `ListV2` class to wrap lists, ensuring it has an `append` method or behaves like a list for data population.

# Anti-Patterns
- Do not use pandas or external libraries unless specified.
- Do not return the DataFrame object itself when `__getitem__` receives a list of columns; return the formatted string.
- Do not assume `self.columns` is always a list; handle tuples as well.

## Triggers

- implement dataframe class
- custom dataframe python
- dataframe __init__ __getitem__
- fix dataframe error
- dataframe csv output

