【问题标题】:Propogation of _metadata from DataFrame to Series_metadata 从 DataFrame 到 Series 的传播
【发布时间】:2014-12-12 19:30:35
【问题描述】:

我希望能够为 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

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

【问题讨论】:

  • 使用 s.copy() 将允许这样做。 2工作; __ copy__ 没有传播可能是一个错误(这是 copy.copy 调用的)

标签: python pandas metadata dataframe propagation


【解决方案1】:

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

这是一个 issue 来实现它。

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

这里是issue,以更全面地记录如何执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-04
    • 2021-07-26
    • 1970-01-01
    • 2018-04-19
    • 2015-12-25
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多