【发布时间】:2018-02-18 23:07:15
【问题描述】:
我想定义一个具有 pd.DataFrame 对象的超级类,如下所示:
import pandas as pd
class my_data_frame(pd.DataFrame):
def __init__(self, index, columns):
super(my_data_frame,self).__init__(index = index, columns = columns)
self = self.fillna(0)
print('init',self)
df = my_data_frame([1,2,3],['a','b','c'])
print('first', df)
这将打印输出
init a b c
1 0 0 0
2 0 0 0
3 0 0 0
first a b c
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
所以问题是为什么第 5 行的 fillna 函数不起作用。由于从 init 函数打印它似乎有效,但在命令行中却没有。
【问题讨论】:
-
self = self.fillna(0)只是将一个新的 Dataframe 分配给局部变量self,然后在方法终止后将其丢弃