我想从子类Pandas 数据帧中重新排序数据帧列.
我从这个question中了解到,可能有一种更好的方法来go 掉数据帧的子类化,但我仍然在想如何处理这个问题.
如果没有子类化,我将以一种classic 的方式来实现:
import pandas as pd
data = {'Description':['mydesc'], 'Name':['myname'], 'Symbol':['mysymbol']}
df = pd.DataFrame(data)
df = df[['Symbol', 'Name', 'Description']]
但对于子类化,保持与classic 行为相同的行为不会对列进行重新排序:
import pandas as pd
class SubDataFrame(pd.DataFrame):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self = self._reorder_columns()
def _reorder_columns(self):
first_columns = ['Symbol', 'Name', 'Description']
return self[first_columns + [c for c in self.columns if c not in first_columns]]
data = {'Description':['mydesc'], 'Name':['myname'], 'Symbol':['mysymbol']}
df = SubDataFrame(data)
我相信我的错误在于重新分配了self
人,这对我没有任何影响.
如何在子类化的数据帧上实现列重新排序?