我想为pandas DataFrame列添加属性,例如管理标签或单元。
df = pd.DataFrame([[1, 2], [5, 6]], columns=['A', 'B'])
df['A'].units = 'm/s'
调用列的单位(df['A'].units
)会返回m/s
。
但是,在任何DataFrame到Series操作之后,属性会丢失,例如添加新列:
df['C'] = [3, 8]
df['A'].units
AttributeError:'Series'对象没有属性'units'
是否有保留属性的方法或添加列的替代方法?
答案 0 :(得分:1)
_metadata
,不是公共API的一部分。 不是一个稳定的方式这样做,现在仍然是
In [8]: df = pd.DataFrame([[1, 2], [5, 6]], columns=['A', 'B'])
In [9]: df['A']._metadata
Out[9]: ['name']
In [10]: df['A']._metadata.append({'units': 'm/s'})
In [11]: df['C'] = [3, 8]
In [12]: df['A']._metadata
Out[12]: ['name', {'units': 'm/s'}]