将单个值存储为DataFrame的属性而不是列的缺点是什么?

时间:2016-06-17 17:01:42

标签: python python-3.x pandas dataframe

我遇到了一些根据DataFrame计算单个值的代码,并将其存储为DataFrame的属性,而不是单独的变量或新列。

这是一个例子。投资组合有两个证券,每个证券都有价格和数量。

import pandas

data = {"Prices" : [83.28, 107.38], "Quantities" : [125.926, 7241.531]}
portfolio = pandas.DataFrame(data, index = ["BND", "VTI"], columns = ["Prices", "Quantities"])
portfolio.value = portfolio["Prices"].dot(portfolio["Quantities"])

以这种方式存储value有什么好处,而不是单独的变量或新的数据列?那是

portfolio["Value"] = portfolio["Prices"].dot(portfolio["Quantities"])

从技术上讲,后者可能会占用更多内存,因为数据集中的每个观察值都会重复这些值,但实际上,这些投资组合大约有1000个证券,因此它不是问题。

将值作为DataFrame的属性进行分配并不会在酸洗中存活,但是还有其他缺点吗?有一些隐藏的好处吗?

1 个答案:

答案 0 :(得分:1)

我猜这是编码错误。我以前做过这个。

假设:

df = pd.DataFrame([1], ['x'])

我以为我有:

df['y'] = 2

但实际上并没有。

后来,我:

df.y = df.x.sum()

如果我实际完成df['y'] = 2df.y会指向系列df['y']。但是因为我没有,df.y = df.x.sum()df['x']的标量和分配给y的属性df

换句话说,我认为没有任何好处。