在链式方法中访问 pandas DataFrame 属性

Access pandas DataFrame attributes inside chained methods

下午好,

我有几个 .csv 文件要转换成 pandas DataFrame。尽管它们在相同的列中包含相同类型的数据,但它们具有不同的列名。我正在尝试即时进行所有小的转换,以便能够一次连接所有数据帧。我遇到的问题是,据我所知,没有办法访问 DataFrame "on the fry" 的属性,首先你将它分配给一个变量,然后访问数据。通过以下方式:

df = pd.read_csv("my_csv.csv")
df = df.rename(columns=dict(zip(df.columns, [my_columns])))

所以我想知道是否有人知道做如下事情的方法:

(pd.read_csv("my_csv.csv")
    .rename(columns=dict(zip(SELF.columns, [my_columns])))
)

其中 SELF 引用刚刚创建的 DataFrame。

到目前为止,我已经尝试使用 lambda 函数但没有成功,因为我知道它们可以用于根据在刚创建的对象上设置的条件对 DataFrame 进行子集化,例如 [lambda x: x.ColumnA > 20]

提前致谢。

编辑:

.pipe() 的帮助下,我能够完成我正在寻找的事情 我做了以下事情:

def rename_columns(self, columns):
    return self.rename(columns=dict(zip(self.columns, columns)))

(pd.DataFrame([{'a':1},{'a':1},{'a':1},{'a':1},{'a':1}])
    .pipe(rename_columns, ['b'])
)

您可以为此使用 .set_axis

(pd.DataFrame(np.random.randn(5, 5))
 .set_axis(['A', 'B', 'C', 'D', 'E'], axis=1, inplace=False)
 )

inplace 将在 pandas 的未来版本中更改,但目前默认为 Trueaxis=1 对列进行操作。