[英]Add columns to extended `pandas.DataFrame` class
我创建了pandas.DataFrame
的子类来捆绑一些功能:
class ABT(pandas.DataFrame):
def __init__(self, data=None, ...):
if data is None:
...
data = DataFrame(..., tz='utc'))
super(ABT, self).__init__(data)
我想制作一个使用另一个DataFrame作为参数并将其附加到ABT
。 问题是: 如何加入/合并/与self
?
def add_df(self, new_df):
df_utc = new_df.tz_localize('CET', ambiguous='NaT').tz_convert('utc')
...
self.merge(df_utc , how='left', inplace=True)
上面的方法不起作用,但是我希望有一种解决方法。
没有用于merge
inplace
关键字。 除此之外,您还应该阅读Subclassing pandas数据结构 。 所以你需要这样的东西:
class ABT(pd.DataFrame):
@property
def _constructor(self):
return ABT
@property
def _constructor_sliced(self):
return pd.Series
def add_df(self, new_df):
return self.merge(new_df, how='left')
abt1 = ABT(df1)
abt2 = ABT(df2)
abt1 = abt1.add_df(abt2)
如果不定义构造函数,结果add_df()
将类型pandas.core.frame.DataFrame
代替ABT
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.