Python Dataframe 向列添加描述

Mai*_*and 4 python dataframe pandas

我想向列添加描述,例如我收集数据的数据源。这样的事可能吗?大约 8 年前,有人在“ Adding my own description attribute to a Pandas DataFrame”中提出了类似的问题,但没有答案。

我的代码:

df=
     
index            colA          colB
#description     from SensorA   SensorB   # Description row 
1
2
3
Run Code Online (Sandbox Code Playgroud)

Jak*_*kub 5

pandas-dev/pandas#2485上的评论建议使用_metadata.attrs。有关更多信息,请参阅https://pandas.pydata.org/pandas-docs/stable/development/extending.html#define-original-properties 。

实现此目的的一种方法是子类化pandas.DataFrame并添加_metadata.

定义_metadata将传递给操作结果的普通属性。

import pandas as pd

class SubclassedDataFrame(pd.DataFrame):

    # normal properties
    _metadata = ['description']

    @property
    def _constructor(self):
        return SubclassedDataFrame

data = {"a": [1, 2, 3], "b": [10, 12, 13]}

df = SubclassedDataFrame(data)

df.description = "About my data"
Run Code Online (Sandbox Code Playgroud)

子类中的设置_metadata指示这些属性应在操作后传播。请参阅下面的示例,.head()了解pd.DataFrame该子类之间的差异。

data = {"a": [1, 2, 3], "b": [10, 12, 13]}

df = SubclassedDataFrame(data)
df.description = "About my data"
df.head().description  # prints 'About my data'

df_orig = pd.DataFrame(data)
df_orig.description = "About my data"
df_orig.head().description  # raises AttributeError
Run Code Online (Sandbox Code Playgroud)