1

我希望能够为 DataFrame 的每一列存储“单位”信息并具有以下代码(uisng pandas v 0.14.1):

import pandas as pd
import numpy as np
import copy

# Monkey path Series:
pd.Series._metadata.append('units')

# Test it
df = pd.DataFrame(data=np.random.randn(5,2), columns=['A', 'B'])
df['A'].units = 's'
df['B'].units = 'm'

s = df['A']
print s.units # produces 's' as expected / desired

s = copy.copy(df['A'])
print s.units # crash, attribute does not exists
print s._metadata # produces ['name', 'units'] as expected

显然元数据没有正确传播。这是故意的还是错误的?如果是故意的,可以做些什么来完成这项工作?

4

1 回答 1

1

copy.copy(...)目前适用于 pandas 对象,但该机制不保留元数据。

这是实现这一点的问题。

一个简单的解决方法是简单地使用s.copy()它将保留元数据。

这是一个更完整地记录如何执行此操作的问题。

于 2014-10-17T11:01:42.727 回答