在我看来,熊猫为我提供了一个虚拟的电子表格,比如Excel。 Excel电子表格的一个方面是您可以将列设置为函数。例如
T_c T T_r
Series 1 1 ? T/T_c
Series 2 2 ? T/T_c
有没有办法创建一个DataFrame,以便列T_r跟踪对列T所做的任何更改?换句话说,任何时候T更新,T_r也会更新。
答案 0 :(得分:0)
[当我来到这里亲自寻找答案时,它是根据以上评论构建而成的。]
在当前的pandas
版本中,我没有这样的方式。
要通过簿记来实现同一目的,您可以具有创建计算列的功能
def update_computed_column(df):
df['c'] = df['a'] / df['b']
,然后在有兴趣检查该值时调用它。
或者,将DataFrame
用吸气剂包装在班上。
class WrappedDataFrame:
def __init__(self, df):
self._df = df
self._update_computed_columns()
def _update_computed_columns(self):
# Define all your computed columns
self._df['c'] = self._df['a'] / self._df['b']
@property
def df(self):
self._update_computed_columns()
return self._df
因此,修改数据将自动重新计算列。
>>> a = WrappedDataFrame(DataFrame.from_dict({'a': [1, 2, 3], 'b': [4, 5, 6]}))
>>> print(a.df)
a b c
0 1 4 0.25
1 2 5 0.40
2 3 6 0.50
>>> a.df['a'] = [7, 8, 9]
>>> print(a.df)
a b c
0 7 4 1.75
1 8 5 1.60
2 9 6 1.50
这可以通过添加新的计算列,将其公式作为函数存储在私有字典中的方法等来扩展。
或者,您可以子类DataFrame
并直接集成计算---取决于您的目的。